@sunbird-cb/utils-v2 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@sunbird-cb/utils-v2/lib/services/configurations.service.ts","ng://@sunbird-cb/utils-v2/lib/services/value.service.ts","ng://@sunbird-cb/utils-v2/lib/components/image-crop/image-crop.component.ts","ng://@sunbird-cb/utils-v2/lib/components/image-crop/image-crop.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/class-change-on-scroll/class-change-on-scroll.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/default-thumbnail/default-thumbnail.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/default-thumbnail/default-thumbnail.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/image-responsive/image-responsive.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/image-responsive/image-responsive.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/in-view-port/in-view-port.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/in-view-port/in-view-port.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/navigation/navigation.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/navigation/navigation.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/permission/permission.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/permission/permission.module.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller/horizontal-scroller.component.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller/horizontal-scroller.module.ts","ng://@sunbird-cb/utils-v2/lib/services/event.model.ts","ng://@sunbird-cb/utils-v2/lib/services/utility.service.ts","ng://@sunbird-cb/utils-v2/lib/services/event.service.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.component.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.module.ts","ng://@sunbird-cb/utils-v2/lib/services/logger.service.ts","ng://@sunbird-cb/utils-v2/lib/services/auth-microsoft.service.ts","ng://@sunbird-cb/utils-v2/lib/services/auth-keycloak.service.ts","ng://@sunbird-cb/utils-v2/lib/helpers/logout/logout.component.ts","ng://@sunbird-cb/utils-v2/lib/helpers/logout/logout.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-count-transform/pipe-count-transform.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-date-concat/pipe-date-concat.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter/pipe-filter.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter/pipe-filter.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-ordinal/pipe-ordinal.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-ordinal/pipe-ordinal.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-email/pipe-email.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-email/pipe-email.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v2/pipe-filter-v2.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v2/pipe-filter-v2.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v3/pipe-filter-v3.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v3/pipe-filter-v3.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-search/pipe-filter-search.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-list-filter/pipe-list-filter.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-relative-time/pipe-relative-time.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-order-by/pipe-order-by.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-order-by/pipe-order-by.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-limit-to/pipe-limit-to.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-name-transform/pipe-name-transform.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-partial-content/pipe-partial-content.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-public-URL/pipe-public-URL.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-public-URL/pipe-public-URL.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-certificate-image-URL/pipe-certimage-URL.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-certificate-image-URL/pipe-certimage-URL.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-nic-relative/pipe-nic-relative.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-nic-relative/pipe-nic-relative.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-coursename/pipe-coursename.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-coursename/PipeCourseNameModule.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/explore-detail.resolver.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page.model.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/marketing-offering.resolve.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page.constant.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page.resolver.ts","ng://@sunbird-cb/utils-v2/lib/services/configurations.model.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page-name.resolver.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/module-name.resolver.ts","ng://@sunbird-cb/utils-v2/lib/services/widget-content.model.ts","ng://@sunbird-cb/utils-v2/lib/services/widget-content.service.ts","ng://@sunbird-cb/utils-v2/lib/services/nps-grid.service.ts","ng://@sunbird-cb/utils-v2/lib/services/telemetry.service.ts","ng://@sunbird-cb/utils-v2/lib/services/subapplication-respond.service.ts","ng://@sunbird-cb/utils-v2/lib/services/user-preference.service.ts","ng://@sunbird-cb/utils-v2/lib/services/widget-resolver.model.ts","ng://@sunbird-cb/utils-v2/lib/services/multilingual-translations.service.ts","ng://@sunbird-cb/utils-v2/lib/constants/features.enum.ts","ng://@sunbird-cb/utils-v2/lib/constants/instances.enum.ts","ng://@sunbird-cb/utils-v2/lib/helpers/functions/getStringifiedQueryParams.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","r","ar","error","ConfigurationsService","appSetup","userUrl","baseUrl","sitePath","hostPath","window","location","replace","userRoles","userGroups","restrictedFeatures","restrictedWidgets","instanceConfig","appsConfig","rootOrg","org","activeOrg","isProduction","hasAcceptedTnc","profileDetailsStatus","isActive","userPreference","userProfile","userProfileV2","nodebbUserProfile","isAuthenticated","isNewUser","pinnedApps","BehaviorSubject","Set","prefChangeNotifier","ReplaySubject","tourGuideNotifier","authChangeNotifier","updateProfile","updateProfileObservable","asObservable","updateTourGuide","updateTourGuideObservable","updatePlatformRating","bottom","updatePlatformRatingObservable$","languageTranslationFlag","Subject","activeThemeObject","activeFontObject","isDarkMode","isIntranetAllowed","isRTL","activeLocale","activeLocaleGroup","completedActivity","completedTour","profileSettings","primaryNavBar","color","pageNavBar","primaryNavBarConfig","welcomeTabs","compentency","cstoken","changeNavBarFullView","openExploreMenuForMWeb","updateGlobalProfile","state","updateTourGuideMethod","updatePlatformRatingMethod","Injectable","args","providedIn","ValueService","breakpointObserver","isXSmall$","observe","Breakpoints","XSmall","pipe","map","res","matches","isLtMedium$","Small","BreakpointObserver","ImageCropComponent","dialogRef","configSvc","snackBar","valueSvc","data","EventEmitter","isRoundCrop","isNotOfRequiredSize","imageFileBase64","width","height","imageDimensions","croppedHeight","croppedWidth","cropperReadyToStart","fileName","canvasRotation","transform","resetValue","isXSmall","isThumbnail","imageFile","imageFileName","opHeight","opWidth","ngOnInit","_this","thumbnailSizeDetection","subscribe","updateSize","changeToDefaultImg","$event","target","src","logos","defaultContent","imageCropped","event","base64","cropimageFile","base64ImageToBlob","openSnackBar","message","open","duration","continueToImageCrop","fr","FileReader","readAsDataURL","onload","img","Image","str","pos","indexOf","b64","substr","imageContent","atob","buffer","ArrayBuffer","view","Uint8Array","charCodeAt","blob","Blob","type","b","lastModifiedDate","Date","name","File","flipAfterRotate","flippedH","flipH","flippedV","flipV","rotateLeft","rotateRight","flipHorizontal","zoom","scale","croppingImage","close","reset","Component","selector","template","MatDialogRef","MatSnackBar","Inject","MAT_DIALOG_DATA","Output","ImageCropModule","NgModule","declarations","imports","CommonModule","ImageCropperModule","MatIconModule","MatButtonModule","MatDialogModule","MatToolbarModule","MatCardModule","MatTooltipModule","MatSliderModule","exports","entryComponents","ScrollingUp","ScrollingDown","NoScrolling","ClassChangeOnScrollDirective","wsClassOnScrollDirChange","hasScrolledDown","windowScrollSubscription","lastScreenTop","currState","ScrollingStateEnum","defineProperty","fromEvent","debounceTime","clearTimeout","timeoutTimer","curr","scrollY","setScrollState","ngAfterViewInit","ngOnDestroy","unsubscribe","prev","resetScrollingState","setTimeout","Directive","Input","HostBinding","ClassChangeOnScrollModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","ngOnChanges","HostListener","DefaultThumbnailModule","customBreakPoints","ImageResponsiveDirective","srcBindUrl","currentSize","breakpointSubscription","distinctUntilChanged","breakpoints","setSrc","ImageResponsiveModule","InViewPortDirective","_el","inViewport","check","scroll","resize","partial","direction","el","nativeElement","elSize","offsetWidth","offsetHeight","rec","getBoundingClientRect","vp","innerWidth","innerHeight","tViz","top","bViz","lViz","left","rViz","right","vVisible","hVisible","emit","ElementRef","InViewPortModule","NavigationDirective","wsUtilsNavigation","openInNewTab","routeUrl","onMouseEnter","includes","preventDefault","stopPropagation","NavigationModule","PermissionDirective","PermissionModule","HorizontalScrollerComponent","loadStatus","onHover","loadNext","horizontalScrollElem","enablePrev","enableNext","scrollObserver","horizontalScrollElem_1","throttleTime","updateNavigationBtnStatus","timer","showPrev","clientWidth","scrollTo","scrollLeft","behavior","showNext","elem","scrollWidth","ViewChild","static","HorizontalScrollerModule","MatProgressSpinnerModule","WsEvents","IWsEventsFromWidget","IWsEventsFromPage","IWsEvents","ITelemetryPageContext","ITelemetryEdata","ITelemetryTabData","IWsEventTelemetry","IWsEventTelemetryPdfData","IWsEventTelemetrySurveyData","IWsEventTelemetryInteract","IWsEventTelemetryFeedback","IWsEventTelemetryImpression","IWsEventTelemetrySearch","IWsEventTelemetryHeartBeat","IWsEventTelemetryMediaData","WsEventType","WsEventLogLevel","WsAuditTypes","WsTimeSpentType","WsTimeSpentMode","externalTelemetrypdata","EnumTelemetrySubType","EnumTelemetryPdfActivity","EnumTelemetryMediaActivity","EnumTelemetryMediaState","EnumTelemetrymodules","EnumInteractTypes","EnumInteractSubTypes","UtilityService","http","platform","router","route","currentRouteData","events","NavigationEnd","snapshot","firstChild","root","getChildRouteData","RANDOM_ID_PER_USER","getJson","url","get","getLeafNodes","node","nodes","children","forEach","child","getPath","id","path","hasPath","pathArr","identifier","some","u","isIos","isAndroid","IOS","ANDROID","Boolean","appRef","webkit","messageHandlers","setRouteData","module","pageId","rd","HttpClient","Platform","Router","ActivatedRoute","EventService","environment","utilitySvc","todaysEvents","eventsSubject","events$","eventsChatbotSubject","chatbotEvents$","eventsGetStartSubject","getStartEvents$","eventsPRSubject","getPREvents$","dispatchEvent","pageContext","getContext","dispatchChatbotEvent","dispatchGetStartedEvent","dispatchPlatformRatingEvent","raiseInteractTelemetry","edata","object","eventType","Telemetry","eventLogLevel","Info","eventSubType","Interact","from","to","raiseFeedbackTelemetry","Feedback","raiseCustomImpression","Impression","routeDataContext","routeData","finalContext","pageIdExt","handleTabTelemetry","subType","CLICK","camelCase","context","position","index","getPublicUrl","mainUrl","split","contentHost","contentBucket","allEventDateFormat","datetime","date","getDate","year","getFullYear","month","getMonth","hours","getHours","minutes","getMinutes","seconds","getSeconds","formatedDate","moment","format","compareDate","startDate","now","day","slice","customDateFormat","time","stime","setEventListData","eventObj","undefined","data_1","keys","obj","floor","Math","creatordata","creatorDetails","JSON","parse","startTime","starttime","etime","endTime","endtime","eventDataObj","eventName","eventStartTime","eventEndTime","eventStartDate","eventCreatedOn","createdOn","eventDuration","eventjoined","eventThumbnail","appIcon","pastevent","HorizontalScrollerV2Component","eventService","sliderConfig","showNavs","showDots","cerificateCardMargin","activeNav","cardSubType","bottomDotsArray","stripConfig","getBottomDotsArray","raiseNavigationTelemetry","subtype","HOME","widthDiff","abs","round","ceil","slideTo","ele","diff","arrLength_1","cardWidth","document","getElementsByClassName","scrollerWidth","widgetsLength","defaultMaxWidgets","HorizontalScrollerV2Module","LoggerService","consoleError","console","consoleInfo","info","consoleLog","log","consoleWarn","warn","noConsole","removeConsoleAccess","noConsoleWithError","Error","storage","localStorage","API_ENDPOINTS","sharePointToken","AuthMicrosoftService","loggerSvc","msConfig","clientId","tenant","defaultEmailId","validEmailExtensions","isConfigured","emailUsed","code","msToken","accessToken","expiresOn","resource","tokenType","base","searchParam","URLSearchParams","response_type","client_id","redirect_uri","href","fragment","search","substring","toString","logoutUrl","redirectUrl","isValidEmail","init","config","microsoft","queryParams","has","origin","pathname","exchangeTokenForCode","_a","hash","history","replaceState","login","email","loginUrl","getToken","isValid","getTokenForEmail","_c","_b","loginForSSOEnabledEmbed","msPrevTS","parseInt","getItem","setItem","ext","endsWith","toPromise","response","getInstanceFromResponse","token","AuthKeycloakService","keycloakSvc","msAuthSvc","loginChangeSubject","isLoggedIn","disablePidCheck","userEmail","userName","userId","getKeycloakInstance","authenticated","sessionId","kc","tokenParsed","sub","idTokenParsed","encEmail","preferred_username","initAuth","setupGlobalAuthResponder","addKeycloakEventListener","keycloak","realm","initOptions","getSavedKcConfig","onLoad","checkLoginIframe","enableBearerInterceptor","loadUserProfileAtStartUp","bearerExcludedUrls","idpHint","defaultRedirectUrl","redirectUri","loginV2","_idpHint","register","logout","removeItem","sessionStorage","clear","force_logout","keycloakEvents$","KeycloakEventType","OnAuthError","OnAuthLogout","OnAuthRefreshError","OnAuthRefreshSuccess","OnAuthSuccess","OnReady","saveKeycloakConfig","OnTokenExpired","updateToken","filter","source","postMessage","contentWindow","app","plugin","kcInitOptions","idToken","refreshToken","timeSkew","stringify","lastSaved","processed","baseURI","KeycloakService","LogoutComponent","authSvc","translate","disabled","isDownloadableIos","isDownloadableAndroid","setDefaultLang","lang","use","confirmed","isContentDownloadAvailable","iOsAppRef","isAndroidApp","TranslateService","LogoutModule","TranslateModule","PipeConciseDateRangePipe","dateRange","prefix","suffix","fromDate","toDate","fromDateObj","toLocaleString","getTime","toDateObj","Pipe","PipeConciseDateRangeModule","PipeCountTransformPipe","views","String","toFixed","PipeCountTransformModule","PipeDateConcatPipe","months","dateStr","timeZone","PipeDateConcatModule","PipeDurationTransformPipe","h","defaultDuration","hmsCalculation","duration2","utc","asMilliseconds","duration2H","days","padStart","dur","space","PipeDurationTransformModule","PipeHtmlTagRemovalPipe","htmlString","PipeHtmlTagRemovalModule","PipeFilterPipe","term","item","key","RegExp","test","PipeFilterModule","PipeOrdinalPipe","suffixes","PipeOrdinalModule","PipeEmailPipe","join","PipeEmailModule","PipeFilterV2Pipe","items","searchText","searchTextLowerCase","toLowerCase","it","PipeFilterV2Module","PipeFilterV3Pipe","isAnd","Array","isArray","filterKeys_1","reduce","memo","keyName","PipeFilterV3Module","PipeFilterSearchPipe","_i","profileDetails","personalDetails","fullName","title","PipeFilterSearchModule","PipeListFilterPipe","toLocaleLowerCase","PipeListFilterModule","PipeRelativeTimePipe","fromNow","startOf","PipeRelativeTimeModule","OrderByPipe","orderBy","PipeOrderByModule","PipeLimitToPipe","limit","slicedString","PipeLimitToModule","PipeNameTransformPipe","firstName","trim","PipeNameTransformModule","PipePartialContentPipe","keys_1","tslib_1.__values","keys_1_1","PipePartialContentModule","PipeSafeSanitizerPipe","sanitizer","bypassSecurityTrustHtml","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","DomSanitizer","PipeSafeSanitizerModule","PipePublicURL","finalURL","PipePublicURLModule","PipeCertificateImageURL","certificateassets","bucketName","PipeCertificateImageURLModule","PipeNicRelativePipe","generateUrl","oldUrl","chunk","newChunk","azureHost","newLink","azureBucket","PipeNicRelativeModule","PipeCourseNamePipe","PipeCourseNameModule","ExploreDetailResolve","isIntranetAllowedSettings","_state","tag","decodeURIComponent","params","tags","pageUrl","pageType","pageKey","pageData","transformPageData","catchError","err","of","pageLayout","widgetData","widgets","widget","navigationBar","links","link","widgetSubType","text","pageTitle","clickUrl","pageBackLink","concat","edge","idx","strips","strip","request","searchV6","filters","andFilters","catalogPaths","isMobile","isInIntranet","noDataWidget","NsPage","MarketingOfferingResolve","IPage","INavBar","INavBackground","INavLink","INavLinkConfig","JSON_MAP","pagename","PageResolve","locale","getData","paramMap","setS3Cookie","_contentId","EMPTY","getContent","post","equivalentId","startsWith","forkJoin","mergeMap","status","artifactUrl","pageRequest","general","withLocale","LOCALE_ID","NsInstanceConfig","NsAppsConfig","NsUser","PageNameResolve","ModuleNameResolve","moduleName","charAt","toUpperCase","IConfig","IPortalUrls","IForgotPassword","ISourceLogo","IHubs","IIndexHtmlMeta","IFontSize","IKeycloak","ILocalsConfig","IMicrosoft","ITheme","IThemeColor","IOverrideThemeChanges","IDesktop","IMWeb","ILogos","IMailIds","IDetails","IPrimaryNavbarConfig","ITelemetryConfig","IAppsConfig","IGroup","IFeature","IUserProfile","INodebbUserProfile","IUserPidProfile","IUserPidProfileV2","IUserPidProfileVer2","ILanguages","NsContent","IContinueLearningData","IContent","EContentTypes","EMiscPlayerSupportedCollectionTypes","IContentMinimal","ICollectionHierarchyResponse","IRelatedContentMeta","ICreator","IContentTopic","IContact","IViewerContinueLearningRequest","EPrimaryCategory","PLAYER_SUPPORTED_COLLECTION_TYPES","COURSE","MODULE","PROGRAM","PLAYLIST","KB_SUPPORTED_CONTENT_TYPES","RESOURCE","PLAYLIST_SUPPORTED_CONTENT_TYPES","EMimeTypes","EDisplayContentTypes","EFilterCategory","ETagType","PROTECTED_SLAG_V8","API_END_POINTS","CONTENT","AUTHORING_CONTENT","CONTENT_LIKES","SET_S3_COOKIE","SET_S3_IMAGE_COOKIE","FETCH_MANIFEST","FETCH_WEB_MODULE_FILES","MULTIPLE_CONTENT","CONTENT_SEARCH_V5","CONTENT_SEARCH_V6","CONTENT_SEARCH_REGION_RECOMMENDATION","CONTENT_HISTORY","USER_CONTINUE_LEARNING","CONTENT_RATING","COLLECTION_HIERARCHY","REGISTRATION_STATUS","MARK_AS_COMPLETE_META","contentId","EXT_USER_COURSE_ENROLL","EXT_CONTENT_EROLL","CERT_DOWNLOAD","certId","WidgetContentService","fetchMarkAsCompleteMeta","fetchContent","hierarchyType","additionalFields","retry","fetchAuthoringContent","fetchMultipleContent","ids","fetchCollectionHierarchy","pageNumber","pageSize","fetchContentLikes","contentIds","fetchContentRatings","fetchContentHistory","continueLearning","collectionId","collectionType","reqBody","contextPathId","resourceId","timestamp","contextFullPath","dateAccessed","contextType","saveContinueLearning","catch","finally","content","setS3ImageCookie","_err","fetchManifest","fetchWebModuleContent","encodeURIComponent","req","query","searchRegionRecommendation","preLabelValue","country","labels","fetchContentRating","deleteContentRating","delete","addContentRating","getFirstChildInHierarchy","primaryCategory","KNOWLEDGE_ARTIFACT","PRACTICE_RESOURCE","FINAL_ASSESSMENT","COMP_ASSESSMENT","MANDATORY_COURSE_GOAL","OFFLINE_SESSION","getRegistrationStatus","fetchConfig","fetchExtUserContentEnroll","extContentEnroll","requestBody","downloadCert","NPSGridService","telemetryEvents","updateTelemetryDataObservable","updateTelemetryData","getFeedStatus","getFormData","formid","submitPlatformRating","deleteFeed","TelemetryService","eventsSvc","logger","npsSvc","previousUrl","telemetryConfig","pData","contextCdata","isAnonymousTelemetry","telArray","externalApps","RBCP","navigationStart","initializeConfig","addPlayerListener","addCustomEventListener","addInteractListener","addFeedbackListener","addTimeSpentListener","addSearchListener","addHearbeatListener","addCustomImpressionListener","addCustomListener","addCustomListenerForGetStart","addCustomListenerForPlatformRating","NavigationStart","updateTelemetryConfig","isAnonymousTelemetryRequired","endpoint","publicEndpoint","protectedEndpoint","pdata","uid","channel","rootOrgId","sid","getTelemetrySessionId","triggerNPSUpdate","start","$t","mode","pageid","env","end","audit","props","prevstate","heartbeat","impression","objectType","page","getPageDetails","pageUrlParts","uri","objectId","externalImpression","impressionData","subApplicationName","externalConfig","PlatformRating","Loaded","Player","Play","Unloaded","interact","GetStarted","Chatbot","Page","isIframeSupported","mimeType","feedback","rating","commentid","commenttxt","ver","version","rollup","HeartBeat","Search","size","moduleValue","refferUrl","extractContentIdFromUrlParts","urlParts","tocIdx","viewerIdx","SubapplicationRespondService","contentSvc","activatedRoute","eventSvc","teleSvc","subAppname","continueLearningData","loaded","changeContextrespond","loadedRespond","applicationName","viewMode","continueData","lastName","requestId","parentContext","domainName","host","theme","themeName","fontSize","baseFontSize","selectedLocale","darkMode","subApplicationStartMode","user","roles","heartbeatFrequency","contentWindowinfo","continueLearningRespond","tData","eventId","Warn","Trace","unsubscribeResponse","endpoints","UserPreferenceService","configurationSvc","initialize","changedUserPref","saveUserPreference","fetchUserPreference","newUserPref","selectedTheme","themeClass","selectedFont","fontClass","selectedLangGroup","colorPallet","defaultCardType","oldUserPref_1","put","NsWidgetResolver","MultilingualTranslationsService","selectedLang","languageSelected","languageSelectedObservable","editProfileDetails","getLanguage","unMappedUser","additionalProperties","webPortalLang","translateLabelWithoutspace","nlabel","translationKey","instant","translationKeyn","translateLabel","sl","w","translateActualLabel","editProfileDetailsAPI","updatelanguageSelected","userid","reqUpdates","IUnitPermissionObject","IPermissions","IBaseConfig","IRegistrationConfig","IRegistrationsPermissionConfig","IRenderConfigWithTypedData","IWidgetData","ITitle","PLAYLIST_CREATE","PLAYLIST_ADD_NEW_CONTENT","PLAYLIST_REMOVE_EXISTING_CONTENT","PLAYLIST_DELETE","PLAYLIST_SHARE","GOAL","GOAL_CREATE_OWN","GOAL_CREATE_SUGGESTED","GOAL_EDIT_EXISTING_GOAL","GOAL_DELETE_EXISTING_GOAL","GOAL_SHARE_GOAL_WITH_OTHERS","GOAL_VIEW_ALL_GOALS_SECTION","GOAL_VIEW_IN_PROGRESS_GOALS_SECTION","GOAL_VIEW_COMPLETED_GOALS_SECTION","NAVIGATOR","NAVIGATOR_VIEW_NAVIGATOR_CAROUSEL","NAVIGATOR_VIEW_ROLES_PAGE","NAVIGATOR_SELECT_ANY_PILLAR","NAVIGATOR_PURSUE_ANY_OFFERING","NAVIGATOR_CREATE_GOAL_FROM_OFFERING","NAVIGATOR_VIEW_EXPLORE_PAGE","NAVIGATOR_SELECT_ANY_LEARNING_PATH","NAVIGATOR_CREATE_GOAL_FROM_LEARNING_PATH","NAVIGATOR_VIEW_SUGGESTIONS_PAGE","NAVIGATOR_SELECT_SUGGESTED_TOPICS","NAVIGATOR_GET_SUGGESTIONS_OF_SELECTED_TOPICS","NAVIGATOR_CREATE_GOAL_FROM_SELECTED_LEARNING_PATHS","NAVIGATOR_VIEW_INDUSTRIES_PAGE","NAVIGATOR_VIEW_CME_PAGE","NAVIGATOR_SELECT_SUBDOMAIN","NAVIGATOR_SELECT_PILLAR","NAVIGATOR_SELECT_THEME","NAVIGATOR_VIEW_CPG_PAGE","NAVIGATOR_VIEW_ENERGY_PAGE","NAVIGATOR_VIEW_FINANCIAL_SERVICES_PAGE","NAVIGATOR_VIEW_HEALTH_CARE_PAGE","NAVIGATOR_VIEW_INSURANCE_PAGE","NAVIGATOR_VIEW_LIFE_SCIENCES_PAGE","NAVIGATOR_VIEW_MFG_PAGE","NAVIGATOR_VIEW_RETAIL_PAGE","NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_PAGE","NAVIGATOR_VIEW_UTILITIES_PAGE","NAVIGATOR_VIEW_CME_ANALYTICS","NAVIGATOR_VIEW_GPG_ANALYTICS","NAVIGATOR_VIEW_ENERGY_ANALYTICS","NAVIGATOR_VIEW_FINANCIAL_SERVICES_ANALYTICS","NAVIGATOR_VIEW_HEALTH_CARE_ANALYTICS","NAVIGATOR_VIEW_INSURANCE_ANALYTICS","NAVIGATOR_VIEW_LIFE_SCIENCES_ANALYTICS","NAVIGATOR_VIEW_MFG_ANALYTICS","NAVIGATOR_VIEW_RETAIL_ANALYTICS","NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_ANALYTICS","NAVIGATOR_VIEW_UTILITIES_ANALYTICS","NAVIGATOR_VIEW_PILLARS_PAGE","NAVIGATOR_VIEW_DIFFERENT_COURSES_IN_PILLAR","NAVIGATOR_VIEW_FULL_STACK_PAGE","NAVIGATOR_VIEW_DIFFERENT_FULL_STACK_PROGRAMS","CATALOG","CATALOG_VIEW_CATALOG_LIST","CATALOG_SELECT_ITEM_FROM_CATALOG_LIST","CATALOG_VIEW_PROGRAMS_STRIP","CATALOG_VIEW_COURSES_STRIP","CATALOG_VIEW_LEARNING_MODULES_STRIP","CATALOG_VIEW_RESOURCES_STRIP","MARKETING_PAGE","MARKETING_PAGE_VIEW_BRAND_ASSETS_PAGE","MARKETING_PAGE_VIEW_CORPORATE_STRIP","MARKETING_PAGE_VIEW_EMPLOYEE_STRIP","MARKETING_PAGE_VIEW_EXPERIMENTAL_SHOWCASE_PAGE","MARKETING_PAGE_VIEW_HUBS_PAGE","MARKETING_PAGE_VIEW_CONNECTICUT_STRIP","MARKETING_PAGE_VIEW_INDIANA_STRIP","MARKETING_PAGE_VIEW_RHODE_ISLAND_STRIP","MARKETING_PAGE_VIEW_CLIENT_STORIES_PAGE","MARKETING_PAGE_VIEW_AGILE_SCALE_AT_DIGITAL_STRIP","MARKETING_PAGE_VIEW_AI_POWERED_CORE_STRIP","MARKETING_PAGE_VIEW_ALWAYS_ON_LEAVING_STRIP","MARKETING_PAGE_VIEW_SERVICES_PAGE","MARKETING_PAGE_VIEW_SERVICES_PENTAGON","MARKETING_PAGE_VIEW_OFFERINGS_LIST","MARKETING_PAGE_SELECT_ANY_OFFERING","MARKETING_PAGE_SELECT_ANY_PILLAR_FROM_PENTAGON","MARKETING_PAGE_VIEW_INDUSTRIES_PAGE","MARKETING_PAGE_VIEW_INDUSTRIES_LIST","MARKETING_PAGE_SELECT_ANY_INDUSTRY","MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_PAGE","MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_LIST","MARKETING_PAGE_SELECT_ANY_PRODUCT_AND_SUBSIDIARY","INTERESTS","INTERESTS_ADD_INTERESTS_FROM_SEARCH","INTERESTS_ADD_INTERESTS_FROM_OUR_SUGGESTIONS_SECTION","INTERESTS_REMOVE_INTERESTS_FROM_MY_INTERESTS_SECTION","INTERESTS_VIEW_INTERESTS_SEARCH_FIELD","INTERESTS_VIEW_MY_INTERESTS_SECTION","INTERESTS_VIEW_OWN_SUGGESTIONS_SECTION","INTERESTS_VIEW_MORE_SUGGESTIONS_BUTTON","FEEDBACK","FEEDBACK_VIEW_PLATFORM_FEEDBACK_SECTION","FEEDBACK_STAR_RATING_FOR_PLATFORM","FEEDBACK_WRITE_PLATFORM_FEEDBACK","FEEDBACK_RESET_PLATFORM_FEEDBACK","FEEDBACK_SUBMIT_PLATFORM_FEEDBACK","FEEDBACK_VIEW_CONTENT_FEEDBACK_SECTION","FEEDBACK_STAR_RATING_FOR_CONTENT","FEEDBACK_WRITE_CONTENT_FEEDBACK","FEEDBACK_RESET_CONTENT_FEEDBACK","FEEDBACK_SUBMIT_CONTENT_FEEDBACK","FEEDBACK_VIEW_ISSUE_REPORTING_SECTION","FEEDBACK_WRITING_ISSUE","FEEDBACK_RESET_ISSUE","FEEDBACK_SUBMIT_ISSUE","CONTACT_US","CONTACT_US_VIEW_RAISE_AHD_SECTION","CONTACT_US_VIEW_MAIL_US_SECTION","CONTACT_US_VIEW_TALK_TO_US_SECTION","CONTACT_US_RAISE_AHD","CONTACT_US_WRITE_EMAIL","CONTACT_US_DIAL_FROM_PHONE","FAQ","FAQ_VIEW_LOGIN_FAQS","FAQ_VIEW_ODC_ACCESS_FAQS","FAQ_VIEW_COMPATIBILITY_FAQS","FAQ_VIEW_INSTALLATION_FAQS","FAQ_VIEW_PROGRESS_COMPLETION_FAQS","FAQ_VIEW_VIDEO_FAQS","FAQ_VIEW_AUTHORING_FAQS","MOBILE_APPS","MOBILE_APPS_VIEW_ANDROID_APP_SECTION","MOBILE_APPS_DOWNLOAD_APP_FROM_PLAY_STORE","MOBILE_APPS_DOWNLOAD_APP_FROM_OUR_SERVER","MOBILE_APPS_VIEW_QR_CODE_FOR_ANDROID_APP","MOBILE_APPS_VIEW_IOS_APP_SECTION","MOBILE_APPS_DOWNLOAD_IOS_APP","MOBILE_APPS_VIEW_QR_CODE_FOR_IOS_APP","ABOUT_US","ABOUT_US_VIEW_ABOUT_US_PAGE_SECTIONS","SETTINGS","SETTINGS_VIEW_LANGUAGE_SECTION","SETTINGS_VIEW_FONT_SIZE_SECTION","SETTINGS_VIEW_THEME_SECTION","SETTINGS_CHANGE_LANGUAGE","SETTINGS_CHANGE_FONT_SIZE","SETTINGS_CHANGE_THEME","LOGIN_PAGE","LOGIN_PAGE_LOGIN_FOR_INFOSCIONS","LOGIN_PAGE_LOGIN_FOR_SUBSIDIARIES","LOGIN_PAGE_LOGIN_FOR_NEW_RECRUITS","LOGIN_PAGE_ABOUT_US","LOGIN_PAGE_TERMS_OF_USE","LOGIN_PAGE_FAQS","LOGIN_PAGE_CONTACT_US","TOC_PAGE","TOC_PAGE_VIEW_OVERVIEW_SECTION","TOC_PAGE_VIEW_INSTRUCTOR_LED_SECTION","TOC_PAGE_VIEW_COHORTS_SECTION","TOC_PAGE_VIEW_DISCUSSION_FORUM_SECTION","TOC_PAGE_VIEW_COURSE_ANALYTICS_SECTION","TOC_PAGE_VIEW_WHATS_NEXT_SECTION","TOC_PAGE_VIEW_PART_OF_SECTION","TOC_PAGE_REGISTER_FOR_UPCOMING_TRAINING","TOC_PAGE_UNREGISTER_FROM_REGISTERED_TRAINING","TOC_PAGE_SHARE_INSTRUCTOR_LED_TRAININGS","TOC_PAGE_VIEW_EDUCATORS_OF_TRAININGS","TOC_PAGE_NOMINATE_OTHERS_FOR_TRAININGS","TOC_PAGE_REQUEST_TRAINING","TOC_PAGE_VIEW_ACTIVE_LEARNERS_SECTION","TOC_PAGE_VIEW_ALL_ACTIVE_LEARNERS","TOC_PAGE_VIEW_CURRENTLY_ACTIVE_LEARNERS","TOC_PAGE_VIEW_LEARNERS_SHARING_THE_SAME_GOALS","TOC_PAGE_VIEW_EXPERTS_AND_TUTORS_SECTION","TOC_PAGE_VIEW_ALL_EXPERTS_AND_TUTORS","TOC_PAGE_VIEW_AUTHORS_OF_COURSE","TOC_PAGE_VIEW_EDUCATORS_OF_COURSE","TOC_PAGE_VIEW_TOPPERS_OF_COURSE","TOC_PAGE_MAIL_THE_PERSON","TOC_PAGE_CALL_THE_PERSON","TOC_PAGE_POST_VIEWS_IN_DISCUSSION_FORUM","TOC_PAGE_LEARN_THE_COURSE","TOC_PAGE_LIKE_THE_COURSE","TOC_PAGE_SHARE_THE_COURSE","TOC_PAGE_ADD_COURSE_TO_GOALS","TOC_PAGE_ADD_COURSE_TO_PLAYLIST","TOC_PAGE_ADD_COURSE_TO_WATCHLIST","TOC_PAGE_GIVE_COURSE_FEEDBACK","TOC_PAGE_RESUME_THE_COURSE","TOC_PAGE_START_OVER_THE_COURSE","TOC_PAGE_GO_TO_COURSE_QUIZ","TOC_PAGE_GO_TO_COURSE_HANDS_ON","NAVBAR","NAVBAR_VIEW_LOGO","NAVBAR_CATALOG_ICON","NAVBAR_NAVIGATOR_ICON","NAVBAR_NOTIFICATION_ICON","NAVBAR_SETTINGS_ICON","NAVBAR_SEARCH_ICON","NAVBAR_APPS_ICON","HOME_PAGE","HOME_PAGE_VIEW_CAROUSEL","HOME_PAGE_VIEW_CONTINUE_LEARNING_STRIP","HOME_PAGE_VIEW_FEATURED_APPS_STRIP","HOME_PAGE_VIEW_RECENT_ADDITION_TO_PLAYLISTS_STRIP","HOME_PAGE_VIEW_BASED_ON_YOUR_INTERESTS_STRIP","HOME_PAGE_VIEW_BASED_ON_WHAT_YOU_VIEWED_STRIP","HOME_PAGE_VIEW_LATEST_STRIP","HOME_PAGE_VIEW_TRENDING_STRIP","HOME_PAGE_SHOW_COMPLETED_FILTER","HOME_PAGE_SHOW_RESOURCES_FILTER","TNC_PAGE","TNC_PAGE_VIEW_CONTEST_RULES_SECTION","TNC_PAGE_VIEW_DATA_PRIVACY_SECTION","TNC_PAGE_ACCEPT_TERMS_AND_CONDITIONS","BLOGS","BLOG_VIEW_OTHERS_BLOGS","BLOGS_LIKE_OTHER_BLOGS","BLOGS_VIEW_MY_BLOGS","BLOGS_WRITE_NEW_BLOG","BLOGS_SAVE_BLOG_AS_DRAFT","BLOGS_EDIT_MY_SAVED_BLOG","BLOGS_PUBLISH_MY_BLOG","BLOGS_UPVOTE_FOR_BLOG","BLOGS_DOWNVOTE_FOR_BLOG","BLOGS_WRITE_RESPONSE_FOR_BLOG","BLOGS_DELETE_MY_BLOG","BLOGS_EDIT_MY_RESPONSE","BLOGS_DELETE_MY_RESPONSE","BLOGS_VIEW_DRAFTS_SECTION","BLOGS_VIEW_PUBLISHED_SECTION","QUESTION_AND_ANSWER","QUESTION_AND_ANSWER_VIEW_ALL_QUESTIONS_AND_ANSWERS","QUESTION_AND_ANSWER_VIEW_ONLY_UNANSWERED_QUESTIONS","QUESTION_AND_ANSWER_VIEW_MY_TIMELINE","QUESTION_AND_ANSWER_ASK_NEW_QUESTION","QUESTION_AND_ANSWER_VIEW_SPECIFIC_QUESTION","QUESTION_AND_ANSWER_UPVOTE_FOR_ANSWER","QUESTION_AND_ANSWER_DOWNVOTE_FOR_ANSWER","QUESTION_AND_ANSWER_LIKE_AN_ANSWER","QUESTION_AND_ANSWER_ADD_COMMENT_FOR_ANY_ANSWER","QUESTION_AND_ANSWER_ADD_ANSWER_FOR_ANY_QUESTION","QUESTION_AND_ANSWER_SAVE_QUESTION_AS_DRAFT","QUESTION_AND_ANSWER_PUBLISH_SAVED_QUESTION","QUESTION_AND_ANSWER_VIEW_DRAFTS_SECTION","QUESTION_AND_ANSWER_VIEW_PUBLISHED_SECTION","BADGES","BADGES_VIEW_RECENTLY_EARNED_BADGE","BADGES_VIEW_ALL_EARNED_BADGES","BADGES_VIEW_NEXT_TARGETTED_BADGES","HANDS_ON_DASHBOARD","HANDS_ON_DASHBOARD_VIEW_MY_DASHBOARD","HANDS_ON_DASHBOARD_VIEW_SHARED_PROFILE_SECTION","LEARNING_HISTORY","LEARNING_HISTORY_VIEW_PROGRAMS_SECTION","LEARNING_HISTORY_VIEW_COURSES_SECTION","LEARNING_HISTORY_VIEW_LEARNING_MODULES_SECTION","LEARNING_HISTORY_VIEW_RESOURCES_SECTION","LEARNING_HISTORY_VIEW_CERTIFICATIONS_SECTION","LEARNING_HISTORY_APPLY_COMPLETED_FILTER","LEARNING_HISTORY_VIEW_MORE_BUTTON","LEARNING_TIME","LEARNING_TIME_VIEW_LEARNING_TIME_GRAPH","LEARNING_TIME_APPLY_BAR_GRAPH_FILTER","LEARNING_TIME_APPLY_DATE_RANGE_FILTER","LEARNING_TIME_APPLY_TIME_SPENT_FILTER","LEARNING_TIME_APPLY_APP_AVERAGE_FILTER","LEARNING_TIME_APPLY_USER_AVERAGE_OVER_PERIOD_FILTER","NOTIFICATION","NOTIFICATION_VIEW_RECENT_BADGE_EARNED","NOTIFICATION_VIEW_SHARED_PLAYLIST","NOTIFICATION_VIEW_SHARED_GOALS","PROFILE","PROFILE_VIEW_BASIC_INFORMATION","PROFILE_VIEW_RECENTLY_LEARNED_COURSES","PROFILE_VIEW_LIKED_ITEMS","PROFILE_VIEW_BADGES_EARNED","BEHAVIORAL_SKILLS","BEHAVIORAL_SKILLS_VIEW_MODEL_CLIENT_INTERACTIONS","BEHAVIORAL_SKILLS_VIEW_CLIENT_INTERACTION_TESTS","CERTIFICATIONS","CERTIFICATIONS_VIEW_MY_APPROVALS_SECTION","CERTIFICATIONS_VIEW_MY_REQUESTS_SECTION","CERTIFICATIONS_VIEW_MY_CERTIFICATIONS_SECTION","CERTIFICATIONS_APPLY_COMPLETION_STATUS_FILTER","CODE_CRACK","CODE_CRACK_VIEW_PUZZLE_MANIA","CODE_CRACK_VIEW_CODE_CRACK","CODE_CRACK_VIEW_TECHNOLOGY_PLAYGROUND","CODE_CRACK_WATCH_PROGRAMMING_CHALLENGES_VIDEO","CODE_CRACK_VIEW_ACCELERATE","CODE_CRACK_START_CODE_CRACK_TEST","CODE_CRACK_START_PUZZLE_MANIA","CODE_CRACK_START_TECHNOLOGY_PLAYGROUND","INSTRUCTOR_LED_TRAINING","INSTRUCTOR_LED_TRAINING_VIEW_TRAINING_SCHEDULE_SECTION","INSTRUCTOR_LED_TRAINING_VIEW_FEEDBACK_SECTION","INSTRUCTOR_LED_TRAINING_VIEW_TRAININGS_PLANNED_BY_YOUR_TEAM_SECTION","INSTRUCTOR_LED_TRAINING_SEARCH_TRAINING","INSTRUCTOR_LED_TRAINING_REGISTER_FOR_TRAINING","INSTRUCTOR_LED_TRAINING_GIVE_TRAINING_FEEDBACK","LEADERBOARD","LEADERBOARD_VIEW_WEEKLY_SECTION","LEADERBOARD_VIEW_MONTHLY_SECTION","LEADERBOARD_VIEW_HALL_OF_FAME_SECTION","LEADERBOARD_APPLY_LEARNER_COLLABORATOR_FILTER","LEADERBOARD_BACK_DATE_BUTTON","LEADERBOARD_FORWARD_DATE_BUTTON","PLAYGROUND","PLAYGROUND_VIEW_TECHNOLOGY_PLAYGROUNDS_STRIP","PLAYGROUND_VIEW_ASSESSMENTS_PLAYGROUNDS_STRIP","PUZZLE_MANIA","PUZZLE_MANIA_VIEW_PUZZLE_MANIA","PUZZLE_MANIA_VIEW_CODE_CRACK","PUZZLE_MANIA_VIEW_TECHNOLOGY_PLAYGROUND","PUZZLE_MANIA_WATCH_PROGRAMMING_CHALLENGES_VIDEO","PUZZLE_MANIA_VIEW_ACCELERATE","PUZZLE_MANIA_START_CODE_CRACK_TEST","PUZZLE_MANIA_START_PUZZLE_MANIA","PUZZLE_MANIA_START_TECHNOLOGY_PLAYGROUND","FULL_STACK_SALES_LEADER","FULL_STACK_SALES_LEADER_WATCH_LEADER_VIDEO","FULL_STACK_SALES_LEADER_EMBARK_ON_THIS_LEARNING_JOURNEY_BUTTON","FULL_STACK_SALES_LEADER_QUICK_TOUR_VIDEO_LINK","FULL_STACK_SALES_LEADER_FEEDBACK_LINK","FULL_STACK_SALES_LEADER_DROP_NOTE_LINK","ONBOARDING","ONBOARDING_VIEW_DC_ONBOARDING_PROGRAMS_STRIP","ONBOARDING_VIEW_ORGANISATIONAL_ONBOARDING_PROGRAMS_STRIP","ONBOARDING_VIEW_ROLE_BASED_ONBOARDING_PROGRAMS_STRIP","ONBOARDING_VIEW_UNIT_AND_PROJECT_ONBOARDING_PROGRAMS_STRIP","SEARCH","SEARCH_SEARCHING_CONTENT","KNOWLEDGE_HUB","KNOWLEDGE_HUB_SUBMIT_KNOWLEDGE_ARTIFACTS","KNOWLEDGE_HUB_VIEW_TOP_PROJECTS_SECTION","KNOWLEDGE_HUB_VIEW_INTERESTING_READS_SECTION","KNOWLEDGE_HUB_VIEW_MARKETING_SECTION","KNOWLEDGE_HUB_VIEW_KSHOP_CLASSIC_SECTION","KNOWLEDGE_HUB_VIEW_TRENDING_TOOLS_SECTION","KNOWLEDGE_HUB_VIEW_DOCUMENTS_STRIP","KNOWLEDGE_HUB_VIEW_TOOLS_STRIP","KNOWLEDGE_HUB_VIEW_MARKETING_STRIP","CHANNELS","CHANNELS_VIEW_LEADERSHIP_SECTION","CHANNELS_VIEW_RAVI_KUMAR_PAGE","CHANNELS_VIEW_MOHIT_JOSHI_PAGE","CHANNELS_FOLLOW_RAVI_KUMAR","CHANNELS_MAIL_TO_RAVI_KUMAR","CHANNELS_VIEW_ABOUT_RAVI_KUMAR_SECTION","CHANNELS_VIEW_RAVI_KUMAR_TWEETS_SECTION","CHANNELS_VIEW_RAVI_KUMAR_ARTICLES_SECTION","CHANNELS_VIEW_RAVI_KUMAR_TRAILBLAZERS_SECTION","CHANNELS_VIEW_RAVI_KUMAR_COMMUNICATIONS_SECTION","CHANNELS_VIEW_RAVI_KUMAR_DISCUSSION_SECTION","CHANNELS_LIKE_TWEET_RAVI_KUMAR","CHANNELS_SHARE_TWEET_RAVI_KUMAR","CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_RAVI_KUMAR","CHANNELS_FOLLOW_MOHIT_JOSHI","CHANNELS_MAIL_TO_MOHIT_JOSHI","CHANNELS_VIEW_ABOUT_MOHIT_JOSHI_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_TWEETS_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_ARTICLES_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_TRAILBLAZERS_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_COMMUNICATIONS_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_DISCUSSION_SECTION","CHANNELS_LIKE_TWEET_MOHIT_JOSHI","CHANNELS_SHARE_TWEET_MOHIT_JOSHI","CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_MOHIT_JOSHI","CHANNELS_VIEW_CORPORATE_SECTION","CHANNELS_VIEW_EXPERIENCE_WOW_PAGE","CHANNELS_VIEW_iGOT_KNOWLEDGE_INSTITUTE_PAGE","CHANNELS_VIEW_CMT_LEARNING_HUB_PAGE","CHANNELS_VIEW_FULL_STACK_SALES_LEADERS_PAGE","EXPERIENCE_WOW_PAGE","EXPERIENCE_WOW_PAGE_VIEW_PAGE_SECTIONS","EXPERIENCE_WOW_PAGE_CHECK_iGOT_STATISTICS","EXPERIENCE_WOW_PAGE_CHECK_iGOT_ME_STATISTICS","EXPERIENCE_WOW_PAGE_PROVIDE_SUGGESTIONS","EXPERIENCE_WOW_PAGE_SEND_MAIL_FOR_BECOMING_COCREATOR","iGOT_RADIO","iGOT_RADIO_VIEW_PODCASTS_STRIP","iGOT_TV","iGOT_TV_VIEW_JUST_FOR_YOU_SECTION","iGOT_TV_VIEW_MUST_VIEW_STRIP","iGOT_TV_VIEW_LATEST_STRIP","iGOT_TV_VIEW_CHANNELS_SECTION","iGOT_TV_VIEW_CHANNELS_STRIP","iGOT_TV_VIEW_BROADCAST_SECTION","iGOT_TV_VIEW_PREVIOUS_EVENTS_LIST","iGOT_TV_VIEW_LIVE_EVENTS_LIST","iGOT_TV_VIEW_UPCOMING_EVENTS_LIST","LEADERSHIP_MESSAGES","LEADERSHIP_MESSAGES_VIEW_LEADERSHIP_VIDEO","LIVING_LABS","LIVING_LABS_VIEW_LIVING_LABS_STRIP","AMERICAS_CONFLUENECE","AMERICAS_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS","APAC_CONFLUENECE","APAC_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS","EMEA_CONFLUENECE","EMEA_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS","CONNECT","CONNECT_VIEW_CONTENT_STRIP","LIVE_EVENTS","LIVE_EVENTS_WATCH_LIVE","LIVE_EVENTS_WATCH_CLASSROOM_BROADCAST","LIVE_EVENTS_WATCH_THREE_SIXTY_VIDEO","LIVE_EVENTS_WATCH_FAMILY_MATTERS_VIDEO","LIVE_EVENTS_WATCH_CONFLUENCE_EVENTS","DIGITAL_ASSISTANT_TOUR","DIGITAL_ASSISTANT_TOUR_WATCH_TOUR_VIDEO","QUICK_TOUR","QUICK_TOUR_WATCH_TOUR_VIDEO","LOGOUT","LOGOUT_LOGS_OUT_FROM_APPLICATION","MY_ANALYTICS","MY_ANALYTICS_APPLY_QUARTER_FILTERS","MY_ANALYTICS_VIEW_MY_LEARNING_SECTION","MY_ANALYTICS_VIEW_MY_ASSESSMENT_SECTION","MY_ANALYTICS_VIEW_MY_REFACTORING_SECTION","MY_ANALYTICS_VIEW_MY_PLANS_SECTION","MY_ANALYTICS_VIEW_MY_COLLABORATORS_SECTION","MY_ANALYTICS_VIEW_MY_FEATURES_USAGE_SECTION","MY_ANALYTICS_VIEW_MY_LEARNING_MINUTES","MY_ANALYTICS_VIEW_MY_LEARNING_POINTS","MY_ANALYTICS_VIEW_BADGES","MY_ANALYTICS_VIEW_TIME_SPENT_BY_USER","MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ON_iGOT","MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ACROSS_DIMENSIONS","MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_USER","MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_INFOSCIONS","MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_PEERS","MY_ANALYTICS_VIEW_TOTAL_ASSESSMENTS","MY_ANALYTICS_VIEW_PENDING_ASSESSMENTS","MY_ANALYTICS_VIEW_CERTIFICATIONS","MY_ANALYTICS_VIEW_ASSESSMENTS","MY_ANALYTICS_VIEW_RECENT_ASSESSMENTS","MY_ANALYTICS_VIEW_ASSESSMENT_DETAILS","MY_ANALYTICS_VIEW_RECENT_ASSESSMENT","MY_ANALYTICS_VIEW_MY_REFACTORING_PROGRAM","MY_ANALYTICS_VIEW_NAVIGATOR","MY_ANALYTICS_VIEW_AI_AND_AUTOMATION_PROGRESS","MY_ANALYTICS_VIEW_MY_GOALS","MY_ANALYTICS_VIEW_PLAYLIST","MY_ANALYTICS_VIEW_GOALS_SHARED_WITH_USER","MY_ANALYTICS_VIEW_DETAILED_COURSES_PROGRESS","MY_ANALYTICS_VIEW_GOALS_SHARED_BY_USER","MY_ANALYTICS_VIEW_ARTIFACTS_SHARED_BY_USER","MY_ANALYTICS_VIEW_EXPERTS_USER_CONTACTED","MY_ANALYTICS_VIEW_DETAILED_GOALS_SHARING","MY_ANALYTICS_VIEW_PLAYGROUNDS","MY_ANALYTICS_VIEW_LIKES","MY_ANALYTICS_VIEW_SEARCH","MY_ANALYTICS_VIEW_iGOT_TV","MY_ANALYTICS_VIEW_iGOT_RADIO","MY_ANALYTICS_VIEW_iGOT_LIVE","MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_UNIT","MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_PEERS","LEARNING_ANALYTICS","LEARNING_ANALYTICS_SEARCH_FOR_PARTICIPANTS_AND_EDUCATORS","LEARNING_ANALYTICS_UNIT_FILTER","LEARNING_ANALYTICS_PU_FILTER","LEARNING_ANALYTICS_DU_FILTER","LEARNING_ANALYTICS_ACCOUNT_FILTER","LEARNING_ANALYTICS_LOCATION_FILTER","LEARNING_ANALYTICS_QUARTER_FILTER","LEARNING_ANALYTICS_COMPLETED_FILTER","LEARNING_ANALYTICS_ETA_FILTER","LEARNING_ANALYTICS_UNIQUE_USERS_DATA","LEARNING_ANALYTICS_USERS_BY_ONSITE_OFFSHORE","LEARNING_ANALYTICS_USERS_BY_DEVICE_TYPE","LEARNING_ANALYTICS_USERS_BY_UNIT","LEARNING_ANALYTICS_USERS_BY_TRACK","LEARNING_ANALYTICS_USERS_BY_PU_SALES","LEARNING_ANALYTICS_USERS_BY_CU_TYPE","LEARNING_ANALYTICS_USERS_BY_SKILL","LEARNING_ANALYTICS_USERS_BY_TOPICS","LEARNING_ANALYTICS_USERS_BY_HORIZON","LEARNING_ANALYTICS_USERS_GROWTH","LEARNING_ANALYTICS_USERS_DETAILS","LEARNING_ANALYTICS_VIEW_ALL_TRAININGS_SECTION","LEARNING_ANALYTICS_TALENT_GRID_FILTER","LEARNING_ANALYTICS_STACK_FILTER","LEARNING_ANALYTICS_UNIQUE_PARTICIPANTS","LEARNING_ANALYTICS_OVERALL_PARTICIPANTS","LEARNING_ANALYTICS_AVERAGE_DAYS","LEARNING_ANALYTICS_PARTICIPANTS_BY_ONSITE_ONSHORE","LEARNING_ANALYTICS_PARTICIPANTS_BY_UNIT","LEARNING_ANALYTICS_PARTICIPANTS_BY_PU","LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL_TYPE","LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL","LEARNING_ANALYTICS_PARTICIPANTS_BY_STACKS","LEARNING_ANALYTICS_PARTICIPANTS_BY_NEW_SERVICES","LEARNING_ANALYTICS_PARTICIPANTS_BY_LEARNING_TRACK","LEARNING_ANALYTICS_PARTICIPANTS_BY_OFFERING_MODE","LEARNING_ANALYTICS_PARTICIPANTS_BY_TOPICS","LEARNING_ANALYTICS_PARTICIPANTS_BY_ABCD","LEARNING_ANALYTICS_PARTICIPANTS_DETAILS","LEARNING_ANALYTICS_SCHEDULES_SECTION","LEARNING_ANALYTICS_SCHEDULE_DATE_FILTER","LEARNING_ANALYTICS_PARTICIPANTS","LEARNING_ANALYTICS_EDUCATORS","LEARNING_ANALYTICS_COURSES","LEARNING_ANALYTICS_SCHEDULES","LEARNING_ANALYTICS_VIEW_TRAINING_SCHEDULES_SECTION","LEARNING_ANALYTICS_COURSES_BY_OFFERING_MODE","LEARNING_ANALYTICS_COURSES_BY_TRACK","LEARNING_ANALYTICS_COURSES_BY_TOPIC","LEARNING_ANALYTICS_COURSES_BY_ABCD","LEARNING_ANALYTICS_COURSES_BY_SKILL","APPS_PAGE","APPS_PAGE_VIEW_DIFFERENT_APPS_ICONS","COURSE_CARD","COURSE_CARD_LIKE_THE_COURSE_BUTTON","COURSE_CARD_SHARE_THE_COURSE_BUTTON","COURSE_CARD_ADD_COURSE_TO_GOALS_BUTTON","COURSE_CARD_ADD_COURSE_TO_PLAYLIST_BUTTON","COURSE_CARD_VIEW_MORE_OPTIONS_BUTTON","COURSE_CARD_START_COURSE_OPTION","COURSE_CARD_VIEW_TOC_OPTION","COURSE_CARD_COHORTS_OPTION","COURSE_CARD_ANALYTICS_OPTION","SEARCH_RESULTS_PAGE","SEARCH_RESULTS_PAGE_VIEW_LEARNING_SECTION","SEARCH_RESULTS_PAGE_VIEW_CERTIFICATIONS_SECTION","SEARCH_RESULTS_PAGE_VIEW_KNOWLEDGE_SECTION","SEARCH_RESULTS_PAGE_VIEW_PROJECTS_SECTION","SEARCH_RESULTS_PAGE_VIEW_SOCIAL_SECTION","SEARCH_RESULTS_PAGE_CATALOG_FILTER","SEARCH_RESULTS_PAGE_DURATION_FILTER","SEARCH_RESULTS_PAGE_CONTENT_TYPE_FILTER","SEARCH_RESULTS_PAGE_LEVEL_FILTER","SEARCH_RESULTS_PAGE_SOURCE_FILTER","SEARCH_RESULTS_PAGE_UNIT_FILTER","SEARCH_RESULTS_PAGE_TYPE_FILTER","SEARCH_RESULTS_PAGE_PUBLISHED_DATE_FILTER","SEARCH_RESULTS_PAGE_CATEGORY_FILTER","SEARCH_RESULTS_PAGE_ITEM_TYPE_FILTER","SEARCH_RESULTS_PAGE_TOPICS_FILTER","SEARCH_RESULTS_PAGE_AUTHORS_FILTER","SEARCH_RESULTS_PAGE_TAGS_FILTER","SEARCH_RESULTS_PAGE_GROUPS_FILTER","SEARCH_RESULTS_PAGE_VIEW_RESULT_CARDS","SEARCH_RESULTS_PAGE_VIEW_RELATED_CONCEPTS","LAB_42_INTERVIEW","LAB_42_DIALOGUE","LAB_42_STRATEGY_MAP","LAB_42_VIRTUAL_CLASSROOM","LAB_42_PROJECT_STACK","LAB_42_LIVE_TRANSCRIBE","LAB_42_EPOCH","LEARNING_ASSISTANT_MAQ","LEARNING_ASSISTANT_ILIPDP","INSTANCE","entries"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core'\nimport { NSProfileDataV3 } from '../models/profile-v3.models'\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs'\n// import { environment } from '../../../../../../src/environments/environment'\nimport { NsPage } from '../resolvers/page.model'\nimport { NsAppsConfig, NsInstanceConfig, NsUser } from './configurations.model'\nimport { IPortalUrls, IUserPreference } from './user-preference.model'\n\n// const instanceConfigPath: string | null = window.location.host\n// const locationHost: string | null = window.location.host\n\n// if (!environment.production && Boolean(environment.sitePath)) {\n// locationHost = environment.sitePath\n// instanceConfigPath = environment.sitePath\n// }\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigurationsService {\n // update as the single source of truth\n constructor() {\n // @Inject('env') env: any\n // if (!env.production && Boolean(env.sitePath)) {\n // locationHost = env.sitePath\n // instanceConfigPath = env.sitePath\n // }\n }\n appSetup = true\n // The url the user tried to access while landing in the app before accepting tnc\n userUrl = ''\n baseUrl = `assets/configurations`\n sitePath = `assets/configurations`\n hostPath = (window.location.host).replace(':', '_')\n\n userRoles: Set<string> | null = null\n userGroups: Set<string> | null = null\n restrictedFeatures: Set<string> | null = null\n restrictedWidgets: Set<string> | null = null\n instanceConfig: NsInstanceConfig.IConfig | null = null\n appsConfig: NsAppsConfig.IAppsConfig | null = null\n rootOrg: string | null = null\n courseContentPath?: string\n org: string[] | null = null\n activeOrg: string | null = ''\n isProduction = false\n hasAcceptedTnc = false\n profileDetailsStatus = false\n isActive = true\n userPreference: IUserPreference | null = null\n userProfile: NsUser.IUserProfile | null = null\n userProfileV2: NsUser.IUserProfile | null = null\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null\n // created to store complete user details sent by pid\n unMappedUser: any\n isAuthenticated = false\n isNewUser = false\n portalUrls: IPortalUrls | undefined\n positions: any\n overrideThemeChanges: any\n profileTimelyNudges: any\n\n // pinnedApps\n pinnedApps = new BehaviorSubject<Set<string>>(new Set())\n\n // Notifier\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1)\n tourGuideNotifier = new ReplaySubject<boolean>()\n authChangeNotifier = new ReplaySubject<boolean>(1)\n\n private updateProfile = new BehaviorSubject(false)\n updateProfileObservable = this.updateProfile.asObservable()\n\n updateTourGuide = new BehaviorSubject(true)\n updateTourGuideObservable = this.updateTourGuide.asObservable()\n\n // platform rating\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' })\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable()\n\n languageTranslationFlag = new Subject()\n\n // Preference Related Values\n activeThemeObject: NsInstanceConfig.ITheme | null = null\n activeFontObject: NsInstanceConfig.IFontSize | null = null\n isDarkMode = false\n isIntranetAllowed = false\n isRTL = false\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null\n activeLocaleGroup = ''\n completedActivity: string[] | null = null\n completedTour = false\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints']\n\n primaryNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n }\n pageNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n }\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null\n /* for temp Fix */\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\n // ':',\n // '_',\n // )}`\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null\n compentency: any = null\n\n // variable setting for csJwtToken\n cstoken = ''\n\n changeNavBarFullView = new Subject()\n openExploreMenuForMWeb = new Subject()\n updateGlobalProfile(state: boolean) {\n this.updateProfile.next(state)\n }\n\n updateTourGuideMethod(state: boolean) {\n this.updateTourGuide.next(state)\n }\n\n updatePlatformRatingMethod(state: any) {\n this.updatePlatformRating.next(state)\n }\n\n}\n","import { Injectable } from '@angular/core'\r\nimport { Observable } from 'rxjs'\r\nimport { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout'\r\nimport { map } from 'rxjs/operators'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ValueService {\r\n\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) { }\r\n\r\n public isXSmall$: Observable<boolean> = this.breakpointObserver\r\n .observe([Breakpoints.XSmall])\r\n .pipe(map((res: BreakpointState) => res.matches))\r\n public isLtMedium$: Observable<boolean> = this.breakpointObserver\r\n .observe([Breakpoints.XSmall, Breakpoints.Small])\r\n .pipe(map((res: BreakpointState) => res.matches))\r\n\r\n}\r\n","import { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core'\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'\r\nimport { MatSnackBar } from '@angular/material/snack-bar'\r\n\r\nimport { ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper'\r\nimport { ConfigurationsService } from '../../services/configurations.service'\r\nimport { ValueService } from '../../services/value.service'\r\nexport interface IDialogueDta {\r\n isRoundCrop: boolean,\r\n imageFile: File,\r\n height: number,\r\n width: number,\r\n imageFileName: string\r\n}\r\n@Component({\r\n selector: 'ws-utils-image-crop',\r\n templateUrl: './image-crop.component.html',\r\n styleUrls: ['./image-crop.component.scss'],\r\n})\r\nexport class ImageCropComponent implements OnInit {\r\n // need to set for creator Logo\r\n @Output() data = new EventEmitter<File>()\r\n isRoundCrop = false\r\n isNotOfRequiredSize = false\r\n imageFile!: File\r\n cropimageFile!: File\r\n imageFileBase64: any = ''\r\n width: any = ''\r\n height: any = ''\r\n opHeight: any\r\n opWidth: any\r\n imageDimensions: any = ''\r\n croppedHeight: any = ''\r\n croppedWidth: any = ''\r\n cropperReadyToStart: any = false\r\n fileName = ''\r\n canvasRotation = 0\r\n transform: ImageTransform = {}\r\n resetValue = false\r\n element: any\r\n isXSmall = false\r\n isThumbnail = true\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef<ImageCropComponent>,\r\n private configSvc: ConfigurationsService,\r\n private snackBar: MatSnackBar,\r\n private valueSvc: ValueService,\r\n @Inject(MAT_DIALOG_DATA) data: IDialogueDta\r\n ) {\r\n this.isRoundCrop = data.isRoundCrop\r\n if (data.imageFile) {\r\n this.imageFile = data.imageFile\r\n }\r\n if (data.imageFileName) {\r\n this.fileName = data.imageFileName\r\n }\r\n if (!data.isRoundCrop) {\r\n if (data.height) {\r\n this.opHeight = data.height\r\n }\r\n if (data.width) {\r\n this.opWidth = data.width\r\n }\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.thumbnailSizeDetection()\r\n this.valueSvc.isXSmall$.subscribe((isXSmall: boolean) => {\r\n this.isXSmall = isXSmall\r\n if (this.isXSmall) {\r\n this.dialogRef.updateSize('90%')\r\n } else {\r\n this.dialogRef.updateSize('70%')\r\n }\r\n })\r\n\r\n }\r\n\r\n // displays the default image\r\n changeToDefaultImg($event: any) {\r\n $event.target.src = this.configSvc.instanceConfig ?\r\n this.configSvc.instanceConfig.logos.defaultContent : ''\r\n }\r\n\r\n // image cropping event\r\n imageCropped(event: ImageCroppedEvent) {\r\n\r\n this.imageFileBase64 = event.base64 // store the cropped image as a base64 value\r\n this.cropimageFile = this.base64ImageToBlob(this.imageFileBase64) // convert the cropped image as a file\r\n this.croppedHeight = event.height\r\n this.croppedWidth = event.width\r\n\r\n }\r\n\r\n openSnackBar(message: string) {\r\n this.snackBar.open(message, 'X', {\r\n duration: 2000,\r\n })\r\n }\r\n continueToImageCrop() {\r\n this.isNotOfRequiredSize = false\r\n }\r\n\r\n // checks if the image is of the correct dimensions\r\n thumbnailSizeDetection() {\r\n const fr = new FileReader()\r\n fr.readAsDataURL(this.imageFile)\r\n fr.onload = () => { // when file has loaded\r\n const img = new Image()\r\n img.src = fr.result as string\r\n img.onload = () => {\r\n this.width = img.width\r\n this.height = img.height\r\n if (!this.isRoundCrop) {\r\n if ((this.height === this.opHeight) && (this.width === this.opWidth)) {\r\n this.openSnackBar('Image is of the required dimensions of the thumbnail, croping is not available!')\r\n return\r\n }\r\n if ((this.height < this.opHeight) || (this.width < this.opWidth)) {\r\n this.isNotOfRequiredSize = true\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n base64ImageToBlob(str: string): File {\r\n // extract content type and base64 payload from original string\r\n\r\n const pos = str.indexOf(';base64,')\r\n // var type = str.substring(5, pos);\r\n const b64 = str.substr(pos + 8)\r\n // decode base64\r\n const imageContent = atob(b64)\r\n // create an ArrayBuffer and a view (as unsigned 8-bit)\r\n const buffer = new ArrayBuffer(imageContent.length)\r\n const view = new Uint8Array(buffer)\r\n // fill the view, using the decoded base64\r\n for (let n = 0; n < imageContent.length; n = n + 1) {\r\n view[n] = imageContent.charCodeAt(n)\r\n }\r\n // convert ArrayBuffer to Blob\r\n const blob = new Blob([view], { type: 'image/png' })\r\n const b: any = blob\r\n // Cast to a File() type\r\n b.lastModifiedDate = new Date()\r\n b.name = this.fileName\r\n const file = new File([blob], this.fileName, { type: 'image/jpeg' })\r\n return file\r\n\r\n }\r\n\r\n private flipAfterRotate() {\r\n const flippedH = this.transform.flipH\r\n const flippedV = this.transform.flipV\r\n this.transform = {\r\n ...this.transform,\r\n flipH: flippedV,\r\n flipV: flippedH,\r\n }\r\n }\r\n\r\n rotateLeft() {\r\n this.canvasRotation = this.canvasRotation - 1\r\n this.flipAfterRotate()\r\n }\r\n\r\n rotateRight() {\r\n this.canvasRotation = this.canvasRotation + 1\r\n this.flipAfterRotate()\r\n }\r\n\r\n flipHorizontal() {\r\n this.transform = {\r\n ...this.transform,\r\n flipH: !this.transform.flipH,\r\n }\r\n }\r\n\r\n zoom(event: any) {\r\n this.resetValue = false\r\n this.transform = {\r\n ...this.transform,\r\n scale: event.value,\r\n }\r\n }\r\n\r\n // calls when apply button is clicked,and returns the cropped image\r\n croppingImage() {\r\n this.dialogRef.close(this.cropimageFile)\r\n }\r\n\r\n reset() {\r\n this.resetValue = true\r\n this.canvasRotation = 0\r\n this.transform = {}\r\n }\r\n // closes the dialog box\r\n close(): void {\r\n this.dialogRef.close()\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common'\r\nimport { NgModule } from '@angular/core'\r\nimport {\r\n MatButtonModule,\r\n MatCardModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatSliderModule,\r\n} from '@angular/material'\r\nimport { ImageCropperModule } from 'ngx-image-cropper'\r\nimport { ImageCropComponent } from './image-crop.component'\r\n// @dynamic\r\n@NgModule({\r\n declarations: [ImageCropComponent],\r\n imports: [\r\n CommonModule,\r\n ImageCropperModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatToolbarModule,\r\n MatDialogModule,\r\n MatCardModule,\r\n MatTooltipModule,\r\n MatSliderModule,\r\n ],\r\n exports: [ImageCropComponent],\r\n entryComponents: [ImageCropComponent],\r\n})\r\nexport class ImageCropModule { }\r\n","import { Directive, Input, OnInit, HostBinding, OnDestroy, AfterViewInit } from '@angular/core'\r\nimport { Subscription, fromEvent } from 'rxjs'\r\nimport { debounceTime } from 'rxjs/operators'\r\n\r\nenum ScrollingStateEnum {\r\n ScrollingUp,\r\n ScrollingDown,\r\n NoScrolling,\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsClassChangeOnScroll]',\r\n})\r\nexport class ClassChangeOnScrollDirective implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() wsClassOnScrollDirChange = 5000\r\n\r\n @HostBinding('class.scrolling-down') get isScrollingDown() {\r\n return this.currState === ScrollingStateEnum.ScrollingDown\r\n }\r\n @HostBinding('class.scrolling-up') get isScrollingUp() {\r\n return this.currState === ScrollingStateEnum.ScrollingUp\r\n }\r\n @HostBinding('class.scrolling-no') get isNotScrolling() {\r\n return this.currState === ScrollingStateEnum.NoScrolling\r\n }\r\n @HostBinding('class.scrolled-down') hasScrolledDown = false\r\n\r\n private windowScrollSubscription: Subscription | null = null\r\n private timeoutTimer: any\r\n\r\n private lastScreenTop = 0\r\n private currState: ScrollingStateEnum = ScrollingStateEnum.NoScrolling\r\n constructor() { }\r\n ngOnInit() {\r\n this.windowScrollSubscription = fromEvent<Event>(window, 'scroll')\r\n .pipe(debounceTime(50))\r\n .subscribe(() => {\r\n clearTimeout(this.timeoutTimer)\r\n const curr = window.scrollY\r\n this.hasScrolledDown = curr > 56\r\n this.setScrollState(this.lastScreenTop, curr)\r\n this.lastScreenTop = curr\r\n })\r\n }\r\n\r\n ngAfterViewInit() { }\r\n ngOnDestroy() {\r\n if (this.windowScrollSubscription) {\r\n this.windowScrollSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setScrollState(prev: number = 0, curr: number = 0) {\r\n if (prev > curr) {\r\n this.currState = ScrollingStateEnum.ScrollingUp\r\n } else if (prev < curr) {\r\n this.currState = ScrollingStateEnum.ScrollingDown\r\n } else {\r\n this.currState = ScrollingStateEnum.NoScrolling\r\n }\r\n if (this.currState !== ScrollingStateEnum.NoScrolling) {\r\n this.resetScrollingState()\r\n }\r\n }\r\n private resetScrollingState() {\r\n this.timeoutTimer = setTimeout(\r\n () => {\r\n this.setScrollState()\r\n },\r\n this.wsClassOnScrollDirChange || 5000,\r\n )\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ClassChangeOnScrollDirective } from './class-change-on-scroll.directive'\r\n\r\n@NgModule({\r\n declarations: [ClassChangeOnScrollDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ClassChangeOnScrollDirective],\r\n})\r\nexport class ClassChangeOnScrollModule { }\r\n","import { Directive, Input, HostListener, HostBinding, OnChanges } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsDefaultThumbnail]',\r\n})\r\nexport class DefaultThumbnailDirective implements OnChanges {\r\n\r\n @Input() wsUtilsDefaultThumbnail = ''\r\n @Input() src = ''\r\n isSrcUpdateAttemptedForDefault = false\r\n\r\n @HostBinding('src') srcUrl = ''\r\n @HostListener('error') updateSrc() {\r\n if (!this.isSrcUpdateAttemptedForDefault) {\r\n this.srcUrl = this.wsUtilsDefaultThumbnail\r\n this.isSrcUpdateAttemptedForDefault = true\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.srcUrl = this.src\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DefaultThumbnailDirective } from './default-thumbnail.directive'\r\n\r\n@NgModule({\r\n declarations: [DefaultThumbnailDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [DefaultThumbnailDirective],\r\n})\r\nexport class DefaultThumbnailModule { }\r\n","import { BreakpointObserver } from '@angular/cdk/layout'\r\nimport { Directive, HostBinding, Input, OnChanges, OnDestroy } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { distinctUntilChanged } from 'rxjs/operators'\r\n\r\nexport interface IImageResponsiveUnit {\r\n [key: string]: string\r\n}\r\n\r\nconst customBreakPoints = {\r\n xs: '(max-width: 450px)',\r\n s: '(min-width: 450.001px) and (max-width: 768px)',\r\n m: '(min-width: 768.001px) and (max-width: 1024px)',\r\n l: '(min-width: 1024.001px) and (max-width: 1400px)',\r\n xl: '(min-width: 1400.001px) and (max-width: 1920px)',\r\n xxl: '(min-width: 1920.001px)',\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsImageResponsive]',\r\n})\r\nexport class ImageResponsiveDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() src: IImageResponsiveUnit | null = null\r\n @HostBinding('src') srcBindUrl = ''\r\n\r\n currentSize = ''\r\n breakpointSubscription: Subscription | null = null\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) {\r\n this.breakpointSubscription = this.breakpointObserver\r\n .observe([\r\n customBreakPoints.xs,\r\n customBreakPoints.s,\r\n customBreakPoints.m,\r\n customBreakPoints.l,\r\n customBreakPoints.xl,\r\n customBreakPoints.xxl,\r\n ])\r\n .pipe(distinctUntilChanged())\r\n .subscribe(data => {\r\n // //console.log('data >', data)\r\n if (data.breakpoints[customBreakPoints.xxl]) {\r\n this.currentSize = 'xxl'\r\n } else if (data.breakpoints[customBreakPoints.xl]) {\r\n this.currentSize = 'xl'\r\n } else if (data.breakpoints[customBreakPoints.l]) {\r\n this.currentSize = 'l'\r\n } else if (data.breakpoints[customBreakPoints.m]) {\r\n this.currentSize = 'm'\r\n } else if (data.breakpoints[customBreakPoints.s]) {\r\n this.currentSize = 's'\r\n } else if (data.breakpoints[customBreakPoints.xs]) {\r\n this.currentSize = 'xs'\r\n } else {\r\n this.currentSize = 'xl'\r\n }\r\n this.setSrc()\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.setSrc()\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.breakpointSubscription) {\r\n this.breakpointSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setSrc() {\r\n if (\r\n this.currentSize &&\r\n this.src &&\r\n this.src[this.currentSize]\r\n ) {\r\n this.srcBindUrl = this.src[this.currentSize]\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ImageResponsiveDirective } from './image-responsive.directive'\r\n\r\n@NgModule({\r\n declarations: [ImageResponsiveDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ImageResponsiveDirective],\r\n})\r\nexport class ImageResponsiveModule { }\r\n","import { Directive, OnInit, Output, EventEmitter, ElementRef, OnDestroy } from '@angular/core'\r\nimport { fromEvent } from 'rxjs'\r\nimport { debounceTime } from 'rxjs/operators'\r\n\r\n@Directive({\r\n selector: '[wsUtilsInViewPort]',\r\n})\r\nexport class InViewPortDirective implements OnInit, OnDestroy {\r\n\r\n private scroll: any\r\n private resize: any\r\n\r\n @Output() inViewport: EventEmitter<boolean> = new EventEmitter<boolean>()\r\n\r\n constructor(private _el: ElementRef) { }\r\n\r\n ngOnInit() {\r\n this.check()\r\n this.scroll =\r\n fromEvent(window, 'scroll').pipe(debounceTime(100)).subscribe(() => {\r\n this.check()\r\n })\r\n this.resize =\r\n fromEvent(window, 'resize').pipe(debounceTime(100)).subscribe(() => {\r\n this.check()\r\n })\r\n\r\n // let limit = 1\r\n // this.scroll =\r\n // fromEvent(window, 'scroll').pipe(debounceTime(100)).subscribe(() => {\r\n // if (limit) {\r\n // this.check()\r\n // limit -= 1\r\n // }\r\n // })\r\n\r\n // this.resize =\r\n // fromEvent(window, 'resize').toPromise().then(() => {\r\n // this.check()\r\n // })\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.scroll.unsubscribe()\r\n this.resize.unsubscribe()\r\n }\r\n\r\n check(partial: boolean = true, direction: string = 'both') {\r\n const el = this._el.nativeElement\r\n\r\n const elSize = (el.offsetWidth * el.offsetHeight)\r\n\r\n const rec = el.getBoundingClientRect()\r\n\r\n const vp = {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n }\r\n\r\n const tViz = rec.top >= 0 && rec.top < vp.height\r\n const bViz = rec.bottom > 0 && rec.bottom <= vp.height\r\n\r\n const lViz = rec.left >= 0 && rec.left < vp.width\r\n const rViz = rec.right > 0 && rec.right <= vp.width\r\n\r\n const vVisible = partial ? tViz || bViz : tViz && bViz\r\n const hVisible = partial ? lViz || rViz : lViz && rViz\r\n\r\n let event = false\r\n\r\n if (direction === 'both') {\r\n event = (elSize && vVisible && hVisible) ? true : false\r\n } else if (direction === 'vertical') {\r\n event = (elSize && vVisible) ? true : false\r\n } else if (direction === 'horizontal') {\r\n event = (elSize && hVisible) ? true : false\r\n }\r\n this.inViewport.emit(event)\r\n }\r\n}\r\n","import { InViewPortDirective } from './in-view-port.directive'\r\nimport { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\n\r\n@NgModule({\r\n declarations: [InViewPortDirective],\r\n exports: [InViewPortDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n})\r\nexport class InViewPortModule { }\r\n","import { Directive, OnChanges, Input, HostBinding, HostListener } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsNavigation]',\r\n})\r\nexport class NavigationDirective implements OnChanges {\r\n @Input() wsUtilsNavigation = ''\r\n @Input() openInNewTab = false\r\n @Input()\r\n @HostBinding('attr.routerLink') routeUrl = ''\r\n @HostListener('mousedown', ['$event']) onMouseEnter($event: Event) {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n $event.preventDefault()\r\n $event.stopPropagation()\r\n this.routeUrl = './'\r\n window.open(this.wsUtilsNavigation)\r\n }\r\n }\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n this.routeUrl = './'\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NavigationDirective } from './navigation.directive'\r\n\r\n@NgModule({\r\n declarations: [NavigationDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [NavigationDirective],\r\n})\r\nexport class NavigationModule { }\r\n","import { Directive } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsPermission]',\r\n})\r\nexport class PermissionDirective {\r\n\r\n constructor() { }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PermissionDirective } from './permission.directive'\r\n\r\n@NgModule({\r\n declarations: [PermissionDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PermissionDirective],\r\n})\r\nexport class PermissionModule { }\r\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core'\r\nimport {\r\n fromEvent,\r\n Subscription,\r\n timer,\r\n} from 'rxjs'\r\nimport { debounceTime, throttleTime } from 'rxjs/operators'\r\nimport { TFetchStatus } from '../../constants/misc.constants'\r\n\r\n@Component({\r\n selector: 'ws-utils-horizontal-scroller',\r\n templateUrl: './horizontal-scroller.component.html',\r\n styleUrls: ['./horizontal-scroller.component.scss'],\r\n})\r\nexport class HorizontalScrollerComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input()\r\n loadStatus: TFetchStatus = 'none'\r\n @Input()\r\n onHover = false\r\n @Output()\r\n loadNext = new EventEmitter()\r\n @ViewChild('horizontalScrollElem', { static: true })\r\n horizontalScrollElem: ElementRef | null = null\r\n\r\n enablePrev = false\r\n enableNext = false\r\n private scrollObserver: Subscription | null = null\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.horizontalScrollElem) {\r\n const horizontalScrollElem = this.horizontalScrollElem\r\n this.scrollObserver = fromEvent(\r\n horizontalScrollElem.nativeElement,\r\n 'scroll',\r\n )\r\n .pipe(debounceTime(100), throttleTime(100))\r\n .subscribe(_ => {\r\n this.updateNavigationBtnStatus(horizontalScrollElem\r\n .nativeElement as HTMLElement)\r\n })\r\n }\r\n }\r\n ngOnChanges() {\r\n timer(100).subscribe(() => {\r\n if (this.horizontalScrollElem) {\r\n this.updateNavigationBtnStatus(this.horizontalScrollElem\r\n .nativeElement as HTMLElement)\r\n }\r\n })\r\n }\r\n ngOnDestroy() {\r\n if (this.scrollObserver) {\r\n this.scrollObserver.unsubscribe()\r\n }\r\n }\r\n showPrev() {\r\n if (this.horizontalScrollElem) {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft -= 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\r\n behavior: 'smooth',\r\n })\r\n }\r\n }\r\n }\r\n showNext() {\r\n if (this.horizontalScrollElem) {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft += 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\r\n behavior: 'smooth',\r\n })\r\n }\r\n }\r\n }\r\n private updateNavigationBtnStatus(elem: HTMLElement) {\r\n this.enablePrev = true\r\n this.enableNext = true\r\n if (elem.scrollLeft === 0) {\r\n this.enablePrev = false\r\n }\r\n if (elem.scrollWidth === elem.clientWidth + elem.scrollLeft) {\r\n if (this.loadStatus === 'hasMore') {\r\n this.loadNext.emit()\r\n } else {\r\n this.enableNext = false\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { HorizontalScrollerComponent } from './horizontal-scroller.component'\r\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material'\r\n\r\n@NgModule({\r\n declarations: [HorizontalScrollerComponent],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n exports: [HorizontalScrollerComponent],\r\n})\r\nexport class HorizontalScrollerModule { }\r\n","export namespace WsEvents {\r\n export interface IWsEventsFromWidget {\r\n type: 'widget'\r\n widgetType: string\r\n widgetSubType: string\r\n }\r\n export interface IWsEventsFromPage {\r\n type: 'page'\r\n pageUrl: string\r\n pageType: string\r\n }\r\n export enum WsEventType {\r\n Action = 'Action',\r\n Telemetry = 'Telemetry',\r\n PageNavigation = 'PageNavigation',\r\n AccessRestrictedContentAccessed = 'AccessRestrictedContentAccessed',\r\n PageSlow = 'PageSlow',\r\n ErrorOccurred = 'ErrorOccurred',\r\n WidgetResolveError = 'WidgetResolveError',\r\n }\r\n export enum WsEventLogLevel {\r\n Warn = 'Warn',\r\n Error = 'Error',\r\n Info = 'Info',\r\n Log = 'Log',\r\n Trace = 'Trace',\r\n }\r\n export enum WsAuditTypes {\r\n Created = 'Created',\r\n Updated = 'Updated',\r\n Deleted = 'Deleted',\r\n }\r\n export enum WsTimeSpentType {\r\n Page = 'Page',\r\n Player = 'Player',\r\n }\r\n export enum WsTimeSpentMode {\r\n Play = 'Play',\r\n View = 'View',\r\n }\r\n export enum externalTelemetrypdata {\r\n RBCP = 'rbcp-web-ui',\r\n }\r\n\r\n export interface IWsEvents<T> {\r\n eventType: WsEventType\r\n eventLogLevel: WsEventLogLevel\r\n from: IWsEventsFromWidget | IWsEventsFromPage | string\r\n to: string\r\n data: T\r\n passThroughData?: any\r\n pageContext?: any\r\n }\r\n\r\n export enum EnumTelemetrySubType {\r\n Init = 'Init',\r\n Interact = 'Interact',\r\n Loaded = 'Loaded',\r\n Unloaded = 'Unloaded',\r\n StateChange = 'StateChange',\r\n HeartBeat = 'HeartBeat',\r\n Search = 'Search',\r\n Feedback = 'Feedback',\r\n Impression = 'Impression',\r\n Chatbot = 'Chatbot',\r\n GetStarted = 'Get Started',\r\n PlatformRating = 'PlatformRating',\r\n }\r\n\r\n export interface ITelemetryPageContext {\r\n pageId?: string,\r\n module?: string,\r\n pageIdExt?: string\r\n }\r\n\r\n export interface ITelemetryEdata {\r\n type: string\r\n subType?: string\r\n id?: string\r\n pageid?: string\r\n }\r\n\r\n export interface ITelemetryTabData {\r\n label: string,\r\n index: number,\r\n }\r\n\r\n export interface IWsEventTelemetry {\r\n eventSubType: EnumTelemetrySubType\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n // PDF Telemetry Event\r\n export enum EnumTelemetryPdfActivity {\r\n PAGE_CHANGED = 'PAGE_CHANGED',\r\n FULLSCREEN_ACTIVATED = 'FULLSCREEN_ACTIVATED',\r\n FULLSCREEN_DEACTIVATED = 'FULLSCREEN_DEACTIVATED',\r\n ZOOM_CHANGE = 'ZOOM_CHANGE',\r\n NONE = 'NONE',\r\n }\r\n export interface IWsEventTelemetryPdfData extends IWsEventTelemetry {\r\n activityType: EnumTelemetryPdfActivity\r\n currentPage: number\r\n totalPage: number\r\n activityStartedAt: Date | null\r\n object: any\r\n }\r\n\r\n export interface IWsEventTelemetrySurveyData extends IWsEventTelemetry {\r\n object: any\r\n }\r\n export type WsEventTelemetryPDF = IWsEvents<IWsEventTelemetryPdfData>\r\n export type WsEventTelemetrySurvey = IWsEvents<IWsEventTelemetrySurveyData>\r\n\r\n // Interact Telemetry Event\r\n export interface IWsEventTelemetryInteract extends IWsEventTelemetry {\r\n edata: ITelemetryEdata\r\n object: any\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n export interface IWsEventTelemetryFeedback extends IWsEventTelemetry {\r\n edata: ITelemetryEdata\r\n object: any\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n export interface IWsEventTelemetryImpression extends IWsEventTelemetry {\r\n edata?: ITelemetryEdata\r\n object?: any\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n export interface IWsEventTelemetrySearch extends IWsEventTelemetry {\r\n type: string\r\n subType?: string\r\n query?: string\r\n filters?: string\r\n size?: number\r\n locale?: any\r\n }\r\n export interface IWsEventTelemetryHeartBeat extends IWsEventTelemetry {\r\n type: string\r\n // subType?: string\r\n // mode: string\r\n id: string\r\n // mimeType: string\r\n }\r\n export type WsEventTelemetryInteract = IWsEvents<IWsEventTelemetryInteract>\r\n export type WsEventTelemetryFeedback = IWsEvents<IWsEventTelemetryFeedback>\r\n export type WsEventTelemetryImpression = IWsEvents<IWsEventTelemetryImpression>\r\n export type WsEventTelemetrySearch = IWsEvents<IWsEventTelemetrySearch>\r\n export type WsEventTelemetryHeartBeat = IWsEvents<IWsEventTelemetryHeartBeat>\r\n\r\n // Multimedia Telemetry Data\r\n export enum EnumTelemetryMediaActivity {\r\n PLAYED = 'PLAYED',\r\n PAUSED = 'PAUSED',\r\n SEEKED = 'SEEKED',\r\n ENDED = 'ENDED',\r\n VOLUME_CHANGE = 'VOLUME_CHANGE',\r\n MUTE = 'MUTE',\r\n UNMUTE = 'UNMUTE',\r\n PLAYBACK_SPEED_CHANGE = 'PLAYBACK_SPEED_CHANGE',\r\n FULLSCREEN_ACTIVATED = 'FULLSCREEN_ACTIVATED',\r\n FULLSCREEN_DEACTIVATED = 'FULLSCREEN_DEACTIVATED',\r\n PICTURE_IN_PICTURE_ACTIVATED = 'PICTURE_IN_PICTURE_ACTIVATED',\r\n PICTURE_IN_PICTURE_DEACTIVATED = 'PICTURE_IN_PICTURE_DEACTIVATED',\r\n NONE = 'NONE',\r\n }\r\n export enum EnumTelemetryMediaState {\r\n PLAYING = 'PLAYING',\r\n PAUSED = 'PAUSED',\r\n ENDED = 'ENDED',\r\n BUFFERING = 'BUFFERING',\r\n NOT_STARTED = 'NOT_STARTED',\r\n }\r\n export interface IWsEventTelemetryMediaData extends IWsEventTelemetry {\r\n currentState: EnumTelemetryMediaState\r\n activityType: EnumTelemetryMediaActivity\r\n currentTime: number | null\r\n totalTime: number | null\r\n maxedSeekedTime: number\r\n activityStartedAt?: Date | null\r\n }\r\n export type WsEventTelemetryMedia = IWsEvents<IWsEventTelemetryMediaData>\r\n\r\n export enum EnumTelemetrymodules {\r\n CONTENT = 'content',\r\n FEEDBACK = 'feedback',\r\n COURSE = 'course',\r\n PROGRAM = 'program',\r\n EXPLORE = 'explore',\r\n LEARN = 'learn',\r\n HOME = 'home',\r\n DASHBOARD = 'dashboard',\r\n SEARCH = 'search',\r\n DISCUSS = 'Discuss',\r\n COMPETENCY = 'competency',\r\n EVENTS = 'events',\r\n CAREER = 'career',\r\n PROFILE = 'profile',\r\n NETWORK = 'network',\r\n SUPPORT = 'support',\r\n KARMAPOINTS = 'karmapoints',\r\n PLATFORM_RATING = 'platformrating',\r\n }\r\n export enum EnumInteractTypes {\r\n CLICK = 'click',\r\n subType = 'subType',\r\n }\r\n export enum EnumInteractSubTypes {\r\n COURSE_TAB = 'course-tab',\r\n CAREER_TAB = 'career-tab',\r\n NETWORK_TAB = 'network-tab',\r\n COMPETENCY_TAB = 'competency-tab',\r\n PROFILE_EDIT_TAB = 'profile-edit-tab',\r\n DISCUSS_TAB = 'discuss-tab',\r\n EVENTS_TAB = 'events-tab',\r\n SIDE_MENU = 'side-menu',\r\n MY_IGOT = 'my-igot',\r\n MY_LEARNING = 'my-learning',\r\n RECENTLY_ADDED = 'recently-added',\r\n TRENDING_IN_YOUR_DEPARTMENT = 'trending-in-your-department',\r\n TRENDING_ACROSS_YOUR_DEPARTMENTS = 'trending-across-your-departments',\r\n LEARNING_UNDER_30_MINUTES = 'learning-under-30-minutes',\r\n BLENDED_PROGRAM = 'blended program',\r\n RECENT_CONNECTION_REQUEST = 'recent-connection-request',\r\n CERTIFICATIONS_OF_THE_WEEK = 'certifications-of-the-week',\r\n HOME_PAGE_STRIP_TABS = 'home-page-strip-tabs',\r\n HUB_MENU = 'hub-menu',\r\n PORTAL_NUDGE = 'portal_nudge',\r\n CERTIFICATE = 'certificate',\r\n DEFAULT_SUBTYPE = 'default-subtype',\r\n SUGGESTED_CONNECTIONS = 'suggested-connections',\r\n PROFILE = 'profile',\r\n ADD_POST = 'add-post',\r\n TRENDING_DISCUSSIONS = 'trending-discussions',\r\n MY_DISCUSSIONS = 'my-discussions',\r\n }\r\n}\r\n","import { Platform } from '@angular/cdk/platform'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\nimport { Observable } from 'rxjs'\r\nimport { Router, NavigationEnd, ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router'\r\nimport { WsEvents } from './event.model'\r\ninterface IWindowMobileAppModified extends Window {\r\n appRef?: any\r\n webkit?: any\r\n}\r\ndeclare var window: IWindowMobileAppModified\r\n\r\nconst RANDOM_ID_PER_USER = 0\r\ninterface IRecursiveData {\r\n identifier: string\r\n children: null | IRecursiveData[]\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UtilityService {\r\n currentRouteData: any[] = []\r\n constructor(\r\n private http: HttpClient,\r\n private platform: Platform,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n // private events: EventService,\r\n ) {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationEnd) {\r\n // let snapshot = this.router.routerState.firstChild(this.activatedRoute).snapshot\r\n // console.log('this.route.snapshot :: ', this.route.snapshot)\r\n const snapshot = this.route.snapshot\r\n // console.log('root.snapshot.root.firstChild ', snapshot.root.firstChild)\r\n // console.log('firstChild ', snapshot.firstChild)\r\n const firstChild = snapshot.root.firstChild\r\n this.getChildRouteData(snapshot, firstChild)\r\n }\r\n })\r\n }\r\n\r\n private getChildRouteData(snapshot: ActivatedRouteSnapshot, firstChild: ActivatedRouteSnapshot | null) {\r\n if (firstChild) {\r\n if (firstChild.data) {\r\n // console.log('firstChild.data', firstChild.data)\r\n this.currentRouteData.push(firstChild.data)\r\n }\r\n if (firstChild.firstChild) {\r\n this.getChildRouteData(snapshot, firstChild.firstChild)\r\n }\r\n }\r\n }\r\n\r\n get randomId() {\r\n return RANDOM_ID_PER_USER + 1\r\n }\r\n\r\n getJson<T>(url: string): Observable<T> {\r\n return this.http.get<T>(url)\r\n }\r\n\r\n getLeafNodes<T extends IRecursiveData>(node: T, nodes: T[]): T[] {\r\n if ((node.children || []).length === 0) {\r\n nodes.push(node)\r\n } else {\r\n if (node.children) {\r\n node.children.forEach(child => {\r\n this.getLeafNodes(child, nodes)\r\n })\r\n }\r\n }\r\n return nodes\r\n }\r\n getPath<T extends IRecursiveData>(node: T, id: string): T[] {\r\n const path: T[] = []\r\n this.hasPath(node, path, id)\r\n return path\r\n }\r\n\r\n private hasPath<T extends IRecursiveData>(node: T, pathArr: T[], id: string): boolean {\r\n if (node == null) {\r\n return false\r\n }\r\n pathArr.push(node)\r\n if (node.identifier === id) {\r\n return true\r\n }\r\n const children = node.children || []\r\n if (children.some(u => this.hasPath(u, pathArr, id))) {\r\n return true\r\n }\r\n pathArr.pop()\r\n return false\r\n }\r\n\r\n get isMobile(): boolean {\r\n if (this.isIos || this.isAndroid) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n get isIos(): boolean {\r\n return this.platform.IOS\r\n }\r\n\r\n get isAndroid(): boolean {\r\n return this.platform.ANDROID\r\n }\r\n get isAndroidApp(): boolean {\r\n return Boolean(window.appRef)\r\n }\r\n\r\n get iOsAppRef() {\r\n if (\r\n window.webkit &&\r\n window.webkit.messageHandlers &&\r\n window.webkit.messageHandlers.appRef\r\n ) {\r\n return window.webkit.messageHandlers.appRef\r\n }\r\n return null\r\n }\r\n\r\n public setRouteData(data: any) {\r\n this.currentRouteData = data\r\n }\r\n\r\n get routeData(): WsEvents.ITelemetryPageContext {\r\n const data: WsEvents.ITelemetryPageContext = {\r\n module: '',\r\n pageId: '',\r\n }\r\n // tslint:disable-next-line: no-console\r\n // console.log('Final currentDataRoute get routeData()', this.currentRouteData)\r\n this.currentRouteData.map((rd: any) => {\r\n if (rd.pageId) {\r\n data.pageId = `${data.pageId}/${rd.pageId}`\r\n }\r\n if (rd.module) {\r\n data.module = rd.module\r\n }\r\n })\r\n return data\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Subject } from 'rxjs'\r\nimport { WsEvents } from './event.model'\r\nimport { UtilityService } from './utility.service'\r\n/* tslint:disable*/\r\nimport _ from 'lodash'\r\nimport moment from 'moment'\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EventService {\r\n todaysEvents: any = []\r\n \r\n private eventsSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public events$ = this.eventsSubject.asObservable()\r\n\r\n private eventsChatbotSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public chatbotEvents$ = this.eventsChatbotSubject.asObservable()\r\n\r\n private eventsGetStartSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public getStartEvents$ = this.eventsGetStartSubject.asObservable()\r\n\r\n private eventsPRSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public getPREvents$ = this.eventsPRSubject.asObservable()\r\n\r\n environment: any\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private utilitySvc: UtilityService,\r\n ) {\r\n this.environment = environment\r\n // this.focusChangeEventListener()\r\n }\r\n\r\n dispatchEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n event.pageContext = this.getContext(event.pageContext)\r\n this.eventsSubject.next(event)\r\n }\r\n\r\n dispatchChatbotEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n this.eventsChatbotSubject.next(event)\r\n }\r\n\r\n dispatchGetStartedEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n this.eventsGetStartSubject.next(event)\r\n }\r\n\r\n dispatchPlatformRatingEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n this.eventsPRSubject.next(event)\r\n }\r\n\r\n\r\n // helper functions\r\n raiseInteractTelemetry(edata: WsEvents.ITelemetryEdata, object: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n this.dispatchEvent<WsEvents.IWsEventTelemetryInteract>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Info,\r\n data: {\r\n edata,\r\n object,\r\n pageContext: this.getContext(pageContext),\r\n eventSubType: WsEvents.EnumTelemetrySubType.Interact,\r\n },\r\n from: '',\r\n to: 'Telemetry',\r\n })\r\n }\r\n\r\n raiseFeedbackTelemetry(edata: WsEvents.ITelemetryEdata, object: any, from?: string) {\r\n this.dispatchEvent<WsEvents.IWsEventTelemetryInteract>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Info,\r\n data: {\r\n edata,\r\n object,\r\n eventSubType: WsEvents.EnumTelemetrySubType.Feedback,\r\n },\r\n from: from || '',\r\n to: 'Telemetry',\r\n })\r\n }\r\n\r\n // Raise custom impression events eg:on tab change\r\n raiseCustomImpression(object: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n this.dispatchEvent<WsEvents.IWsEventTelemetryImpression>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Info,\r\n data: {\r\n object,\r\n pageContext: this.getContext(pageContext),\r\n eventSubType: WsEvents.EnumTelemetrySubType.Impression,\r\n },\r\n from: '',\r\n to: 'Telemetry',\r\n })\r\n }\r\n\r\n // private focusChangeEventListener() {\r\n // fromEvent(window, 'focus').subscribe(() => {\r\n // this.raiseInteractTelemetry('focus', 'gained', {})\r\n // })\r\n // fromEvent(window, 'blur').subscribe(() => {\r\n // this.raiseInteractTelemetry('focus', 'lost', {})\r\n // })\r\n // }\r\n\r\n // Method to get the context information about the telemetry interact event\r\n private getContext(pageContext: WsEvents.ITelemetryPageContext | undefined): WsEvents.ITelemetryPageContext {\r\n const routeDataContext = this.utilitySvc.routeData\r\n // initialize with the route data configuration - current route's pageID & module\r\n const finalContext: WsEvents.ITelemetryPageContext = {\r\n pageId: routeDataContext.pageId,\r\n module: routeDataContext.module,\r\n }\r\n if (pageContext) {\r\n // if context has pageIdExt, append it to the route's pageId\r\n if (pageContext.pageIdExt) {\r\n finalContext.pageId = `${routeDataContext.pageId}_${pageContext.pageIdExt}`\r\n } else if (pageContext.pageId) {\r\n // else context has pageId, override it to the final pageID\r\n finalContext.pageId = pageContext.pageId\r\n }\r\n // if context has module, override it to the final module\r\n if (pageContext.module) {\r\n finalContext.module = pageContext.module\r\n }\r\n }\r\n\r\n return finalContext\r\n }\r\n\r\n public handleTabTelemetry(subType: string, data: WsEvents.ITelemetryTabData, object?:any) {\r\n // raise a tab click interact event\r\n this.raiseInteractTelemetry(\r\n {\r\n subType,\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: `${_.camelCase(data.label)}-tab`,\r\n },\r\n {\r\n // context: {\r\n // position: data.index,\r\n // },\r\n ...object\r\n },\r\n {\r\n pageIdExt: `${_.camelCase(data.label)}-tab`,\r\n })\r\n\r\n // raise a tab click impression event\r\n this.raiseCustomImpression({\r\n context: {\r\n position: data.index,\r\n },\r\n ...object\r\n },{\r\n pageIdExt: `${_.camelCase(data.label)}-tab`,\r\n })\r\n }\r\n\r\n getPublicUrl(url: string): string {\r\n const mainUrl = url.split('/content').pop() || ''\r\n return `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\r\n }\r\n\r\n allEventDateFormat(datetime: any) {\r\n const date = new Date(datetime).getDate()\r\n const year = new Date(datetime).getFullYear()\r\n const month = new Date(datetime).getMonth()\r\n const hours = new Date(datetime).getHours()\r\n const minutes = new Date(datetime).getMinutes()\r\n const seconds = new Date(datetime).getSeconds()\r\n const formatedDate = new Date(year, month, date, hours, minutes, seconds, 0)\r\n // let format = 'YYYY-MM-DD hh:mm a'\r\n // if (!timeAllow) {\r\n const format = 'YYYY-MM-DD'\r\n // }\r\n const readableDateMonth = moment(formatedDate).format(format)\r\n const finalDateTimeValue = `${readableDateMonth}`\r\n return finalDateTimeValue\r\n }\r\n\r\n compareDate(startDate: any) {\r\n const now = new Date()\r\n\r\n // tslint:disable-next-line:prefer-template\r\n const day = ('0' + (new Date().getDate())).slice(-2)\r\n const year = new Date().getFullYear()\r\n // tslint:disable-next-line:prefer-template\r\n const month = ('0' + (now.getMonth() + 1)).slice(-2)\r\n const todaysdate = `${year}-${month}-${day}`\r\n if (startDate === todaysdate) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n customDateFormat(date: any, time: any) {\r\n const stime = time.split('+')[0]\r\n const hour = stime.substr(0, 2)\r\n const min = stime.substr(2, 3)\r\n return `${date} ${hour}${min}`\r\n }\r\n\r\n\r\n setEventListData(eventObj: any) {\r\n if (eventObj !== undefined) {\r\n this.todaysEvents = []\r\n const data = eventObj\r\n // console.log('strip comp', data)\r\n Object.keys(data).forEach((index: any) => {\r\n const obj = data[index]\r\n const floor = Math.floor\r\n const hours = floor(obj.duration / 60)\r\n const minutes = obj.duration % 60\r\n const duration = (hours === 0) ? ((minutes === 0) ? '---' : `${minutes} minutes`) : (minutes === 0) ? (hours === 1) ?\r\n `${hours} hour` : `${hours} hours` : (hours === 1) ? `${hours} hour ${minutes} minutes` :\r\n `${hours} hours ${minutes} minutes`\r\n const creatordata = obj.creatorDetails !== undefined ? obj.creatorDetails : []\r\n const str = creatordata && creatordata.length > 0 ? creatordata.replace(/\\\\/g, '') : []\r\n const creatorDetails = str && str.length > 0 ? JSON.parse(str) : creatordata\r\n\r\n const stime = obj.startTime.split('+')[0]\r\n const hour = stime.substr(0, 2)\r\n const min = stime.substr(2, 3)\r\n const starttime = `${hour}${min}`\r\n\r\n const etime = obj.endTime.split('+')[0]\r\n const ehour = etime.substr(0, 2)\r\n const emin = etime.substr(2, 3)\r\n const endtime = `${ehour}${emin}`\r\n\r\n const eventDataObj = {\r\n event: obj,\r\n eventName: obj.name,\r\n eventStartTime: starttime,\r\n eventEndTime: endtime,\r\n eventStartDate: obj.startDate,\r\n eventCreatedOn: this.allEventDateFormat(obj.createdOn),\r\n eventDuration: duration,\r\n eventjoined: creatorDetails.length,\r\n eventThumbnail: obj.appIcon && (obj.appIcon !== null || obj.appIcon !== undefined) ?\r\n this.getPublicUrl(obj.appIcon) :\r\n '/assets/icons/Events_default.png',\r\n pastevent: false,\r\n }\r\n const isToday = this.compareDate(obj.startDate)\r\n if (isToday) {\r\n this.todaysEvents.push(eventDataObj)\r\n }\r\n })\r\n }\r\n}\r\n}\r\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core'\nimport {\n fromEvent,\n Subscription,\n timer,\n} from 'rxjs'\nimport { debounceTime, throttleTime } from 'rxjs/operators'\nimport { TFetchStatus } from '../../constants/misc.constants'\nimport { EventService } from '../../services/event.service'\nimport { WsEvents } from '../../services/event.model'\n\n@Component({\n selector: 'ws-utils-horizontal-scroller-v2',\n templateUrl: './horizontal-scroller-v2.component.html',\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\n})\n\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\n\n @Input() loadStatus: TFetchStatus = 'fetching'\n @Input() onHover = false\n @Input() sliderConfig = {\n showNavs: true,\n showDots: true,\n cerificateCardMargin: false,\n }\n @Output() loadNext = new EventEmitter()\n @Input() widgetsLength: any\n @Input() defaultMaxWidgets: any\n @Input() stripConfig: any\n @Input() stripsResultDataMap: any\n @Input() subtype!: string\n @ViewChild('horizontalScrollElem', { static: true })\n horizontalScrollElem: ElementRef | null = null\n\n enablePrev = false\n enableNext = false\n activeNav = 0\n cardSubType = 'standard'\n bottomDotsArray: any = []\n private scrollObserver: Subscription | null = null\n\n constructor(private eventService: EventService) { }\n\n ngOnInit() {\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard'\n if (this.horizontalScrollElem) {\n const horizontalScrollElem = this.horizontalScrollElem\n this.scrollObserver = fromEvent(\n horizontalScrollElem.nativeElement,\n 'scroll',\n )\n .pipe(debounceTime(100), throttleTime(100))\n .subscribe(_ => {\n this.updateNavigationBtnStatus(horizontalScrollElem\n .nativeElement as HTMLElement)\n })\n\n this.getBottomDotsArray()\n }\n }\n\n ngOnChanges() {\n timer(100).subscribe(() => {\n if (this.horizontalScrollElem) {\n this.updateNavigationBtnStatus(this.horizontalScrollElem\n .nativeElement as HTMLElement)\n }\n })\n this.getBottomDotsArray()\n }\n\n ngOnDestroy() {\n if (this.scrollObserver) {\n this.scrollObserver.unsubscribe()\n }\n }\n\n showPrev() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft -= 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\n behavior: 'smooth',\n })\n\n this.activeNav -= 1\n this.raiseNavigationTelemetry('more-left')\n }\n }\n\n showNext() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft += 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\n behavior: 'smooth',\n })\n this.activeNav += 1\n this.raiseNavigationTelemetry('more-right')\n }\n }\n private raiseNavigationTelemetry(id: string) {\n this.eventService.raiseInteractTelemetry(\n {\n id,\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: this.subtype,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n )\n }\n\n private updateNavigationBtnStatus(elem: HTMLElement) {\n this.enablePrev = true\n this.enableNext = true\n if (elem.scrollLeft === 0) {\n this.enablePrev = false\n this.activeNav = 0\n }\n\n const widthDiff = Math.abs(elem.scrollWidth - Math.round(elem.clientWidth + elem.scrollLeft))\n if (widthDiff === 0 || widthDiff === 1) {\n if (this.loadStatus === 'hasMore') {\n this.loadNext.emit()\n } else {\n this.enableNext = false\n if (this.bottomDotsArray.length) {\n this.activeNav = this.bottomDotsArray.length - 1\n }\n }\n }\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth)\n }\n }\n\n slideTo(ele: any) {\n const diff = ele - this.activeNav\n // if (ele > this.activeNav && ele !== this.activeNav) {\n // if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // } else {\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // }\n if (this.horizontalScrollElem) {\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\n behavior: 'smooth',\n })\n }\n this.activeNav = ele\n }\n\n getBottomDotsArray() {\n if (this.horizontalScrollElem) {\n this.bottomDotsArray = []\n let cardWidth\n let arrLength\n // console.log('this.cardSubType-->',this.cardSubType)\n if (this.cardSubType !== 'card-wide-v2') {\n cardWidth = this.cardSubType === 'standard' ? 245 :\n ((document.getElementsByClassName(this.cardSubType) &&\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245)\n if (document.getElementsByClassName('horizontal-scroll-container') &&\n document.getElementsByClassName('horizontal-scroll-container')[0]) {\n const scrollerWidth = document.getElementsByClassName('horizontal-scroll-container')[0].clientWidth\n const totalCardsLength = cardWidth * this.widgetsLength\n if (totalCardsLength > scrollerWidth) {\n arrLength = (scrollerWidth / cardWidth)\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets\n arrLength = this.defaultMaxWidgets / arrLength\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i)\n }\n // console.log('this.cardSubType', this.cardSubType, arrLength, this.widgetsLength ,\n // this.defaultMaxWidgets, scrollerWidth, this.bottomDotsArray)\n }\n }\n } else {\n setTimeout(() => {\n arrLength = document.getElementsByClassName(this.cardSubType).length\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i)\n }\n }, 1000)\n }\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component'\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material'\n\n@NgModule({\n declarations: [HorizontalScrollerV2Component],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n ],\n exports: [HorizontalScrollerV2Component],\n})\nexport class HorizontalScrollerV2Module { }\n","// tslint:disable:no-console\r\nimport { Injectable } from '@angular/core'\r\nimport { ConfigurationsService } from './configurations.service'\r\n\r\ntype consoleFun = (...args: any) => void\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoggerService {\r\n constructor(private configSvc: ConfigurationsService) { }\r\n\r\n private consoleError = console.error\r\n private consoleInfo = console.info\r\n private consoleLog = console.log\r\n private consoleWarn = console.warn\r\n private noConsole: consoleFun = () => { }\r\n\r\n get error() {\r\n return this.consoleError\r\n }\r\n get info() {\r\n return this.configSvc.isProduction ? this.noConsole : this.consoleInfo\r\n }\r\n get log() {\r\n return this.configSvc.isProduction ? this.noConsole : this.consoleLog\r\n }\r\n get warn() {\r\n return this.configSvc.isProduction ? this.noConsole : this.consoleWarn\r\n }\r\n\r\n removeConsoleAccess() {\r\n if (this.configSvc.isProduction) {\r\n return\r\n }\r\n const noConsoleWithError: consoleFun = () => {\r\n throw new Error('Console Functions Usage Are Not Allowed.')\r\n }\r\n // console.log = noConsoleWithError\r\n console.warn = noConsoleWithError\r\n console.info = noConsoleWithError\r\n console.error = noConsoleWithError\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { LoggerService } from './logger.service'\r\nimport { NsInstanceConfig } from './configurations.model'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { IWsMsTokenModelResponse } from './ms-office.model'\r\n// TODO: Use a url-search-polyfill if the site didnot work in IE 11\r\n\r\nconst msTokenExpiryDuration = 600\r\nconst storageKey = 'msLoginRequested'\r\nconst storage = localStorage\r\n\r\nconst API_ENDPOINTS = {\r\n sharePointToken: '/apis/protected/v8/user/token',\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthMicrosoftService {\r\n private msConfig: NsInstanceConfig.IMicrosoft = {\r\n clientId: '',\r\n tenant: '',\r\n defaultEmailId: '',\r\n validEmailExtensions: [],\r\n isConfigured: false,\r\n }\r\n private emailUsed: string | null = null\r\n private code: string | null = null\r\n private msToken: IWsMsTokenModelResponse = {\r\n accessToken: '',\r\n expiresOn: '',\r\n resource: '',\r\n tokenType: '',\r\n }\r\n\r\n constructor(private loggerSvc: LoggerService, private http: HttpClient) { }\r\n\r\n get isLogoutRequired(): boolean {\r\n return Boolean(this.msConfig.isConfigured && this.msConfig.clientId && this.emailUsed)\r\n }\r\n get loginUrl(): string | null {\r\n if (this.msConfig.isConfigured && this.msConfig.clientId) {\r\n const base = 'https://login.windows.net/common/oauth2/authorize'\r\n const searchParam = new URLSearchParams({\r\n response_type: 'code',\r\n client_id: this.msConfig.clientId,\r\n redirect_uri: window.location.href,\r\n })\r\n const fragment = location.search.substring(1)\r\n if (fragment) {\r\n return `${base}?${searchParam.toString()}#${fragment}`\r\n }\r\n return `${base}?${searchParam.toString()}`\r\n }\r\n return null\r\n }\r\n logoutUrl(redirectUrl: string) {\r\n if (this.isValidEmail(this.emailUsed || '')) {\r\n return `https://login.microsoftonline.com/common/oauth2/logout?post_logout_redirect_uri=${redirectUrl}`\r\n }\r\n return redirectUrl\r\n }\r\n\r\n // Behavior Methods\r\n\r\n async init(config: Pick<NsInstanceConfig.IConfig, 'microsoft'>) {\r\n if (!config || !config.microsoft || !config.microsoft.isConfigured) {\r\n this.loggerSvc.warn('Empty/No Configuration passed, ignoring Microsoft Authentication')\r\n }\r\n this.msConfig = config.microsoft\r\n const queryParams = new URLSearchParams(location.search)\r\n if (queryParams.has('code') && queryParams.has('session_state')) {\r\n this.code = queryParams.get('code')\r\n if (!this.code) {\r\n return\r\n }\r\n let url = location.origin + location.pathname\r\n await this.exchangeTokenForCode(this.code, url)\r\n if (location.hash) {\r\n url += location.hash.substring(1)\r\n }\r\n history.replaceState(null, '', url)\r\n }\r\n }\r\n\r\n async login(email: string) {\r\n if (!this.isValidEmail(email)) {\r\n this.loggerSvc.warn(`Microsoft Login is not allowed for your emailId (${email})`)\r\n return\r\n }\r\n const loginUrl = this.loginUrl\r\n if (loginUrl) {\r\n location.assign(loginUrl)\r\n } else {\r\n this.loggerSvc.warn('Unable to identify Office Login URL, Ignoring login request')\r\n }\r\n }\r\n\r\n async getToken(email: string): Promise<string> {\r\n if (\r\n this.msToken &&\r\n this.isValid(this.msToken.accessToken, this.msToken.expiresOn) &&\r\n this.msToken.accessToken\r\n ) {\r\n return this.msToken.accessToken\r\n }\r\n if (this.isValidEmail(email)) {\r\n try {\r\n this.msToken = await this.getTokenForEmail(email)\r\n if (this.msToken.accessToken) {\r\n this.emailUsed = email\r\n return this.msToken.accessToken\r\n }\r\n } catch (error) {\r\n if (!this.code) {\r\n this.login(email)\r\n }\r\n }\r\n }\r\n if (this.msConfig.defaultEmailId && this.isValidEmail(this.msConfig.defaultEmailId)) {\r\n try {\r\n this.msToken = await this.getTokenForEmail(this.msConfig.defaultEmailId)\r\n if (this.msToken.accessToken) {\r\n this.emailUsed = this.msConfig.defaultEmailId\r\n return this.msToken.accessToken\r\n }\r\n } catch (error) { }\r\n }\r\n throw new Error('UNABLE TO FETCH MS AUTH TOKEN')\r\n }\r\n\r\n loginForSSOEnabledEmbed(email: string) {\r\n if (!this.isValidEmail(email)) {\r\n this.loggerSvc.warn('SSO Login request Ignored. Invalid Email Id for SSO Enabled Content')\r\n }\r\n let msPrevTS = 0\r\n try {\r\n msPrevTS = parseInt(storage.getItem(storageKey) || '0', 10)\r\n } catch (error) { }\r\n if (!msPrevTS || (msPrevTS && (Date.now() - msPrevTS) / 1000 > msTokenExpiryDuration)) {\r\n this.loggerSvc.info(\r\n `last login exceeded ${msTokenExpiryDuration} duration. Redirecting to O365 login`,\r\n )\r\n storage.setItem(storageKey, Date.now().toString())\r\n this.login(email)\r\n }\r\n }\r\n\r\n isValidEmail(email: string) {\r\n return this.msConfig.validEmailExtensions.some(ext => email.endsWith(ext))\r\n }\r\n\r\n isValid(accessToken: string | undefined, expiresOn: string | undefined): boolean {\r\n if (accessToken && expiresOn) {\r\n // TODO: Implement expiredOn and Date comparison based validity\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n async exchangeTokenForCode(code: string, redirectUrl: string): Promise<any> {\r\n const response = await this.http\r\n .get<IWsMsTokenModelResponse>(`${API_ENDPOINTS}?code=${code}&redirectUrl=${redirectUrl}`)\r\n .toPromise()\r\n return this.getInstanceFromResponse(response)\r\n }\r\n\r\n async getTokenForEmail(email: string): Promise<any> {\r\n const response = await this.http\r\n .get<IWsMsTokenModelResponse>(`${API_ENDPOINTS.sharePointToken}?email=${email}`)\r\n .toPromise()\r\n return this.getInstanceFromResponse(response)\r\n }\r\n\r\n getInstanceFromResponse(token: IWsMsTokenModelResponse) {\r\n return {\r\n accessToken: token.accessToken,\r\n expiresOn: token.expiresOn,\r\n resource: token.resource,\r\n tokenType: token.tokenType,\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\nimport { KeycloakEvent, KeycloakEventType, KeycloakInitOptions, KeycloakService } from 'keycloak-angular'\r\nimport { fromEvent, ReplaySubject } from 'rxjs'\r\nimport { filter } from 'rxjs/operators'\r\nimport { AuthMicrosoftService } from './auth-microsoft.service'\r\nimport { ConfigurationsService } from './configurations.service'\r\n\r\ninterface IParsedToken {\r\n email?: string\r\n encEmail?: string\r\n name?: string\r\n preferred_username?: string\r\n}\r\n\r\nconst storage = localStorage\r\nconst storageKey = 'kc'\r\n// const logoutRedirectUrl = ''\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthKeycloakService {\r\n private loginChangeSubject = new ReplaySubject<boolean>(1)\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService,\r\n private keycloakSvc: KeycloakService,\r\n private msAuthSvc: AuthMicrosoftService,\r\n ) {\r\n this.loginChangeSubject.subscribe((isLoggedIn: boolean) => {\r\n this.configSvc.isAuthenticated = isLoggedIn\r\n if (\r\n isLoggedIn &&\r\n this.configSvc.instanceConfig &&\r\n Boolean(this.configSvc.instanceConfig.disablePidCheck)\r\n ) {\r\n this.configSvc.userProfile = {\r\n email: this.userEmail,\r\n userName: this.userName,\r\n userId: this.userId || '',\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Getters\r\n get isLoggedIn$() {\r\n return this.loginChangeSubject.asObservable()\r\n }\r\n get isLoggedIn(): Promise<boolean> {\r\n return this.keycloakSvc.isLoggedIn()\r\n }\r\n get isAuthenticated(): boolean | undefined {\r\n return this.keycloakSvc.getKeycloakInstance().authenticated\r\n }\r\n get token(): string | undefined {\r\n return this.keycloakSvc.getKeycloakInstance().token\r\n }\r\n get sessionId(): string | undefined {\r\n return this.keycloakSvc.getKeycloakInstance().sessionId\r\n }\r\n get userId(): string | undefined {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n if (!kc) {\r\n return\r\n }\r\n return (kc.tokenParsed && kc.tokenParsed.sub) || (kc.idTokenParsed && kc.idTokenParsed.sub)\r\n }\r\n\r\n get userEmail(): string | undefined {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n\r\n const tokenParsed = kc.tokenParsed as IParsedToken\r\n const idTokenParsed = kc.idTokenParsed as IParsedToken\r\n return (\r\n (tokenParsed && tokenParsed.email) ||\r\n (idTokenParsed && idTokenParsed.email) ||\r\n (idTokenParsed && idTokenParsed.encEmail) ||\r\n (tokenParsed && tokenParsed.preferred_username) ||\r\n (idTokenParsed && idTokenParsed.preferred_username)\r\n )\r\n }\r\n\r\n get userName(): string | undefined {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n return (\r\n (kc.tokenParsed && (kc.tokenParsed as IParsedToken).name) ||\r\n (kc.idTokenParsed && (kc.idTokenParsed as IParsedToken).name)\r\n )\r\n }\r\n\r\n async initAuth(): Promise<boolean> {\r\n if (!this.configSvc.instanceConfig) {\r\n return false\r\n }\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig.microsoft.isConfigured) {\r\n this.msAuthSvc.init({ microsoft: instanceConfig.microsoft })\r\n }\r\n try {\r\n this.setupGlobalAuthResponder()\r\n this.addKeycloakEventListener()\r\n return await this.keycloakSvc.init({\r\n config: {\r\n url: instanceConfig.keycloak.url,\r\n realm: instanceConfig.keycloak.realm,\r\n clientId: instanceConfig.keycloak.clientId,\r\n },\r\n initOptions: {\r\n ...this.getSavedKcConfig(),\r\n onLoad: instanceConfig.keycloak.onLoad || 'check-sso',\r\n checkLoginIframe: false,\r\n },\r\n enableBearerInterceptor: true,\r\n loadUserProfileAtStartUp: false,\r\n bearerExcludedUrls: instanceConfig.keycloak.bearerExcludedUrls,\r\n })\r\n } catch (err) {\r\n return false\r\n }\r\n }\r\n\r\n login(\r\n idpHint: 'E' | 'N' | 'S' = 'E',\r\n redirectUrl: string = this.defaultRedirectUrl,\r\n ): Promise<void> {\r\n return this.keycloakSvc.login({\r\n idpHint,\r\n redirectUri: redirectUrl,\r\n })\r\n }\r\n loginV2(\r\n _idpHint: 'E' | 'N' | 'S' = 'E',\r\n redirectUrl: string = this.defaultRedirectUrl,\r\n ): Promise<void> {\r\n if (this.configSvc.instanceConfig) {\r\n window.location.href = this.configSvc.instanceConfig.keycloak.url + redirectUrl\r\n return Promise.resolve()\r\n }\r\n return Promise.reject()\r\n }\r\n register(\r\n redirectUrl: string = this.defaultRedirectUrl,\r\n ): Promise<void> {\r\n return this.keycloakSvc.register({\r\n redirectUri: redirectUrl,\r\n })\r\n }\r\n /**\r\n * @deprecated this will be depricated\r\n */\r\n async logout(redirectUrl = this.defaultRedirectUrl) {\r\n if (storage.getItem('telemetrySessionId')) {\r\n storage.removeItem('telemetrySessionId')\r\n }\r\n try {\r\n sessionStorage.clear()\r\n localStorage.clear()\r\n } catch {\r\n\r\n }\r\n storage.removeItem(storageKey)\r\n // alert(`${redirectUrl}apis/reset`)\r\n window.location.href = `${redirectUrl}apis/reset`\r\n // window.location.href = 'http://localhost:3003/reset'\r\n // await this.http.get('/apis/reset').toPromise()\r\n // setTimeout(window.location.href = `${redirectUrl}apis/reset`, 13000)\r\n // logoutRedirectUrl = redirectUrl\r\n // if (this.msAuthSvc.isLogoutRequired) {\r\n // this.keycloakSvc.logout(this.msAuthSvc.logoutUrl(redirectUrl))\r\n // } else {\r\n // this.keycloakSvc.logout(redirectUrl)\r\n // }\r\n }\r\n async force_logout() {\r\n if (storage.getItem('telemetrySessionId')) {\r\n storage.removeItem('telemetrySessionId')\r\n } else {\r\n // window.location.href = '/public/home'\r\n storage.removeItem(storageKey)\r\n await this.http.get('/apis/reset').toPromise()\r\n await this.http.get('https://admin-test.ecornell.com/saml/logout.do').toPromise()\r\n }\r\n try {\r\n sessionStorage.clear()\r\n localStorage.clear()\r\n } catch {\r\n\r\n }\r\n storage.removeItem(storageKey)\r\n await this.http.get('/apis/reset').toPromise()\r\n await this.http.get('https://admin-test.ecornell.com/saml/logout.do').toPromise()\r\n }\r\n private addKeycloakEventListener() {\r\n this.keycloakSvc.keycloakEvents$.subscribe((event: KeycloakEvent) => {\r\n switch (event.type) {\r\n case KeycloakEventType.OnAuthError:\r\n this.loginChangeSubject.next(false)\r\n break\r\n case KeycloakEventType.OnAuthLogout:\r\n this.loginChangeSubject.next(false)\r\n storage.removeItem(storageKey)\r\n break\r\n case KeycloakEventType.OnAuthRefreshError:\r\n break\r\n case KeycloakEventType.OnAuthRefreshSuccess:\r\n break\r\n case KeycloakEventType.OnAuthSuccess:\r\n break\r\n case KeycloakEventType.OnReady:\r\n this.loginChangeSubject.next(event.args)\r\n if (event.args) {\r\n this.saveKeycloakConfig()\r\n }\r\n break\r\n case KeycloakEventType.OnTokenExpired:\r\n this.keycloakSvc.updateToken(60)\r\n break\r\n }\r\n })\r\n }\r\n\r\n private setupGlobalAuthResponder() {\r\n fromEvent<MessageEvent>(window, 'message')\r\n .pipe(\r\n filter(\r\n (event: MessageEvent) =>\r\n Boolean(event) &&\r\n Boolean(event.data) &&\r\n event.data.type === 'AUTH_REQUEST' &&\r\n Boolean(event.source && typeof event.source.postMessage === 'function'),\r\n ),\r\n )\r\n .subscribe(async (event: MessageEvent) => {\r\n const contentWindow = event.source as Window\r\n const token = await this.keycloakSvc.getToken()\r\n const response = {\r\n app: 'WEB_PORTAL',\r\n type: 'AUTH_RESPONSE',\r\n state: 'NONE',\r\n plugin: 'NONE',\r\n data: {\r\n token,\r\n id: event.data && event.data.data && event.data.data.id,\r\n },\r\n }\r\n contentWindow.postMessage(response, '*')\r\n })\r\n }\r\n\r\n // Utility Methods\r\n private saveKeycloakConfig() {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n const kcInitOptions: KeycloakInitOptions = {\r\n idToken: kc.idToken,\r\n refreshToken: kc.refreshToken,\r\n timeSkew: kc.timeSkew,\r\n token: kc.token,\r\n }\r\n storage.setItem(storageKey, JSON.stringify(kcInitOptions))\r\n }\r\n private getSavedKcConfig(): KeycloakInitOptions {\r\n try {\r\n // const lastSaved = KEYCLOAK_STORAGE.getItem(key);\r\n const lastSaved = storage.getItem(storageKey)\r\n if (lastSaved) {\r\n const processed = JSON.parse(lastSaved)\r\n if (\r\n 'idToken' in processed &&\r\n 'refreshToken' in processed &&\r\n 'timeSkew' in processed &&\r\n 'token' in processed\r\n ) {\r\n return processed\r\n }\r\n }\r\n } catch (e) { }\r\n return {}\r\n }\r\n\r\n private get defaultRedirectUrl(): string {\r\n try {\r\n const baseUrl = document.baseURI\r\n return baseUrl || location.origin\r\n } catch (error) {\r\n return location.origin\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core'\r\nimport { MatDialogRef } from '@angular/material'\r\nimport { AuthKeycloakService } from '../../services/auth-keycloak.service'\r\nimport { ConfigurationsService } from '../../services/configurations.service'\r\nimport { UtilityService } from '../../services/utility.service'\r\nimport { TranslateService } from '@ngx-translate/core'\r\n\r\n@Component({\r\n selector: 'ws-utils-logout',\r\n templateUrl: './logout.component.html',\r\n styleUrls: ['./logout.component.scss'],\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n\r\n disabled = false\r\n isDownloadableIos = false\r\n isDownloadableAndroid = false\r\n constructor(\r\n public dialogRef: MatDialogRef<LogoutComponent>,\r\n private authSvc: AuthKeycloakService,\r\n private configSvc: ConfigurationsService,\r\n private utilitySvc: UtilityService,\r\n private translate: TranslateService\r\n ) {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n // tslint:disable-next-line: no-non-null-assertion\r\n const lang = localStorage.getItem('websiteLanguage') || null!\r\n this.translate.use(lang)\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.configSvc.restrictedFeatures) {\r\n this.isDownloadableIos = !this.configSvc.restrictedFeatures.has('iosDownload')\r\n this.isDownloadableAndroid = !this.configSvc.restrictedFeatures.has('androidDownload')\r\n }\r\n }\r\n\r\n confirmed() {\r\n this.disabled = true\r\n this.dialogRef.close()\r\n if (localStorage.getItem('ratingformID')) {\r\n localStorage.removeItem('ratingformID')\r\n }\r\n if (localStorage.getItem('ratingfeedID')) {\r\n localStorage.removeItem('ratingfeedID')\r\n }\r\n if (localStorage.getItem('platformratingTime')) {\r\n localStorage.removeItem('platformratingTime')\r\n }\r\n if (localStorage.getItem('websiteLanguage')) {\r\n localStorage.removeItem('websiteLanguage')\r\n }\r\n // this.authSvc.logout()\r\n this.authSvc.force_logout()\r\n if (localStorage.getItem('faq')) {\r\n localStorage.removeItem('faq')\r\n }\r\n if (localStorage.getItem('faq-languages')) {\r\n localStorage.removeItem('faq-languages')\r\n }\r\n if (sessionStorage.getItem('hideUpdateProfilePopUp')) {\r\n sessionStorage.removeItem('hideUpdateProfilePopUp')\r\n }\r\n if (localStorage.getItem('motivationalMessage')) {\r\n localStorage.removeItem('motivationalMessage')\r\n }\r\n }\r\n\r\n get isDownloadable() {\r\n if (this.configSvc.instanceConfig && this.configSvc.instanceConfig.isContentDownloadAvailable &&\r\n (this.utilitySvc.iOsAppRef || this.utilitySvc.isAndroidApp)) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { MatButtonModule, MatDialogModule } from '@angular/material'\r\n\r\nimport { LogoutComponent } from './logout.component'\r\nimport { TranslateModule } from '@ngx-translate/core'\r\n\r\n@NgModule({\r\n declarations: [LogoutComponent],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n TranslateModule,\r\n ],\r\n entryComponents: [LogoutComponent],\r\n})\r\nexport class LogoutModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\ninterface IDateRange {\r\n fromDate: Date\r\n toDate: Date\r\n timeZone?: string\r\n}\r\n\r\n@Pipe({\r\n name: 'pipeConciseDateRange',\r\n})\r\nexport class PipeConciseDateRangePipe implements PipeTransform {\r\n transform(dateRange: IDateRange): string {\r\n try {\r\n let conciseRange: string\r\n let prefix: string\r\n let suffix: string\r\n const fromDate = new Date(dateRange.fromDate)\r\n const toDate = new Date(dateRange.toDate)\r\n\r\n const fromDateObj = {\r\n day: fromDate.getDate(),\r\n month: fromDate.toLocaleString('default', { month: 'short' }),\r\n year: fromDate.getFullYear(),\r\n time: fromDate.getTime(),\r\n }\r\n\r\n const toDateObj = {\r\n day: toDate.getDate(),\r\n month: toDate.toLocaleString('default', { month: 'short' }),\r\n year: toDate.getFullYear(),\r\n time: toDate.getTime(),\r\n }\r\n\r\n if (fromDateObj.time === toDateObj.time) {\r\n conciseRange = `${fromDateObj.day} ${fromDateObj.month} ${fromDateObj.year}`\r\n return conciseRange\r\n }\r\n\r\n if (fromDateObj.year !== fromDateObj.year) {\r\n prefix = `${fromDateObj.day} ${fromDateObj.month} ${fromDateObj.year}`\r\n suffix = `${toDateObj.day} ${toDateObj.month} ${toDateObj.year}`\r\n conciseRange = `${prefix} - ${suffix}`\r\n return conciseRange\r\n }\r\n\r\n if (fromDateObj.month === toDateObj.month) {\r\n prefix = `${fromDateObj.day}`\r\n suffix = `${toDateObj.day} ${toDateObj.month} ${toDateObj.year}`\r\n } else {\r\n prefix = `${fromDateObj.day} ${fromDateObj.month}`\r\n suffix = `${toDateObj.day} ${toDateObj.month} ${toDateObj.year}`\r\n }\r\n\r\n conciseRange = `${prefix} - ${suffix}`\r\n return conciseRange\r\n } catch (e) {\r\n return `${dateRange.fromDate} - ${dateRange.toDate}`\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeConciseDateRangePipe } from './pipe-concise-date-range.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeConciseDateRangePipe],\r\n imports: [CommonModule],\r\n exports: [PipeConciseDateRangePipe],\r\n})\r\nexport class PipeConciseDateRangeModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeCountTransform',\r\n})\r\nexport class PipeCountTransformPipe implements PipeTransform {\r\n\r\n transform(value: number): string {\r\n const thousand = 1000\r\n const million = 1000000\r\n if (value > 0) {\r\n if (value < thousand) {\r\n return String(value)\r\n }\r\n if (value >= thousand && value < million) {\r\n const views = (value / thousand).toFixed(1)\r\n if (views.endsWith('0')) {\r\n return `${views.split('.')[0]}K`\r\n }\r\n return `${views}K`\r\n }\r\n {\r\n const views = (value / million).toFixed(1)\r\n if (views.endsWith('0')) {\r\n return `${views.split('.')[0]}M`\r\n }\r\n return `${views}M`\r\n }\r\n }\r\n return '0'\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeCountTransformPipe } from './pipe-count-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeCountTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeCountTransformPipe],\r\n})\r\nexport class PipeCountTransformModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\ninterface ICertificationDate {\r\n day: number\r\n month: number\r\n year: number\r\n timeZone?: string\r\n}\r\n\r\n@Pipe({\r\n name: 'pipeDateConcat',\r\n})\r\nexport class PipeDateConcatPipe implements PipeTransform {\r\n private readonly months: string[]\r\n\r\n constructor() {\r\n this.months = [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec',\r\n ]\r\n }\r\n\r\n transform(value: ICertificationDate): string {\r\n let dateStr = `${value.day} ${this.months[value.month - 1]} ${value.year}`\r\n if (value.timeZone) {\r\n dateStr += ` ${value.timeZone}`\r\n }\r\n\r\n return dateStr\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDateConcatPipe } from './pipe-date-concat.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDateConcatPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDateConcatPipe],\r\n})\r\nexport class PipeDateConcatModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeDurationTransform',\r\n})\r\nexport class PipeDurationTransformPipe implements PipeTransform {\r\n\r\n transform(data: number, type?: 'time24' | 'hms' | 'hour' | 'hms2H' | 'hms2M' | 'day' | 'DAYS'): any {\r\n if (data <= 0) {\r\n return ''\r\n }\r\n const h = Math.floor(data / 3600)\r\n const m = Math.floor((data % 3600) / 60)\r\n const s = Math.floor((data % 3600) % 60)\r\n let duration = ''\r\n switch (type) {\r\n case 'time24':\r\n return this.defaultDuration(h, m, s)\r\n case 'hms':\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'hms2H':\r\n /**to Print HH:mm:ss */\r\n const duration2 = moment.duration(data, 'seconds')\r\n const resultstring = moment.utc(duration2.asMilliseconds()).format('HH:mm:ss')\r\n return resultstring\r\n case 'hms2M': /**to Print mm:ss */\r\n const duration2H = moment.duration(data, 'seconds')\r\n const resultstring2H = moment.utc(duration2H.asMilliseconds()).format('mm:ss')\r\n\r\n return resultstring2H\r\n case 'hour':\r\n if (h === 0) {\r\n duration += 'less than an hour'\r\n }\r\n if (h === 1) {\r\n duration += `${h} hour`\r\n }\r\n if (h > 1) {\r\n duration += `${h} hours`\r\n }\r\n return duration\r\n case 'day':\r\n if (h > 24) {\r\n const duration3 = moment.duration(data, 'seconds')\r\n return `${duration3.days()} day(s)`\r\n }\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'DAYS': duration = `${data}d`\r\n return duration\r\n default:\r\n return this.defaultDuration(h, m, s)\r\n }\r\n }\r\n\r\n defaultDuration(h: number, m: number, s: number) {\r\n let duration = ''\r\n duration += h > 0 ? `${h.toString().padStart(2)}:` : ''\r\n duration += m > 0 ? `${m.toString().padStart(2)}:` : '00:'\r\n duration += s > 0 ? s.toString().padStart(2) : '00'\r\n return duration\r\n }\r\n hmsCalculation(h: number, m: number, s: number, dur: string, type: string) {\r\n let space = ''\r\n let duration = dur\r\n if (h > 0) {\r\n duration += type === 'hms' ? `${h}h` : `${h} hr`\r\n }\r\n if (m > 0) {\r\n if (h > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${m}m` : `${space}${m} min`\r\n }\r\n if (s > 0 && h === 0) {\r\n if (m > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${s}s` : `${space}${s} sec`\r\n }\r\n return duration\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDurationTransformPipe } from './pipe-duration-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDurationTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDurationTransformPipe],\r\n})\r\nexport class PipeDurationTransformModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeHtmlTagRemoval',\r\n})\r\nexport class PipeHtmlTagRemovalPipe implements PipeTransform {\r\n\r\n transform(htmlString: string): string {\r\n return htmlString ? String(htmlString).replace(/<[^>]+>/gm, '') : ''\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeHtmlTagRemovalPipe } from './pipe-html-tag-removal.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeHtmlTagRemovalPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeHtmlTagRemovalPipe],\r\n})\r\nexport class PipeHtmlTagRemovalModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeFilter',\r\n})\r\nexport class PipeFilterPipe implements PipeTransform {\r\n\r\n transform(value: any, keys: string, term: string): string {\r\n if (!term) {\r\n return value\r\n }\r\n return (value || []).filter((item: any) => keys.split(',')\r\n .some(key => item.hasOwnProperty(key) && new RegExp(`^${term}$`, 'gi').test(item[key])))\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeFilterPipe } from './pipe-filter.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeFilterPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeFilterPipe],\r\n})\r\nexport class PipeFilterModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeOrdinal',\n})\nexport class PipeOrdinalPipe implements PipeTransform {\n\n transform(value: number): string {\n if (value === 0) { return '0th' }\n const suffixes = ['th', 'st', 'nd', 'rd']\n const v = value % 100\n return value + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0])\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeOrdinalPipe } from './pipe-ordinal.pipe'\n\n@NgModule({\n declarations: [PipeOrdinalPipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeOrdinalPipe],\n})\nexport class PipeOrdinalModule { }\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeEmail',\n})\nexport class PipeEmailPipe implements PipeTransform {\n\n transform(value: string): any {\n return value.split('.').join('[dot]').replace('@', '[at]')\n\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeEmailPipe } from './pipe-email.pipe'\n\n@NgModule({\n declarations: [PipeEmailPipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeEmailPipe],\n})\nexport class PipeEmailModule { }\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeFilterV2',\r\n})\r\nexport class PipeFilterV2Pipe implements PipeTransform {\r\n\r\n transform(items: [], key: string, searchText: string): any {\r\n if (!items) { return [] }\r\n if (!searchText) { return items }\r\n const searchTextLowerCase = searchText.toLowerCase()\r\n\r\n return items.filter(it => {\r\n return `${it[key]} `.toLowerCase().includes(searchTextLowerCase)\r\n })\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeFilterV2Pipe } from './pipe-filter-v2.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeFilterV2Pipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeFilterV2Pipe],\r\n})\r\nexport class PipeFilterV2Module { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeFilterV3',\n})\nexport class PipeFilterV3Pipe implements PipeTransform {\n\n transform(items: any, filter: any, isAnd: boolean): any {\n if (filter && Array.isArray(items)) {\n const filterKeys = Object.keys(filter)\n if (isAnd) {\n return items.filter(item =>\n filterKeys.reduce((memo: boolean, keyName) =>\n // tslint:disable-next-line: align\n (memo && new RegExp(filter[keyName], 'gi').test(item[keyName])) || filter[keyName] === '', true))\n }\n return items.filter(item => {\n return filterKeys.some(keyName => {\n return new RegExp(filter[keyName], 'gi').test(item[keyName]) || filter[keyName] === ''\n })\n })\n\n }\n return items\n\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeFilterV3Pipe } from './pipe-filter-v3.pipe'\n\n@NgModule({\n declarations: [PipeFilterV3Pipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeFilterV3Pipe],\n})\nexport class PipeFilterV3Module { }\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeFilterSearch',\r\n})\r\nexport class PipeFilterSearchPipe implements PipeTransform {\r\n\r\n transform(items: any[], searchText: string, ...keys: any): any {\r\n if (!items) { return [] }\r\n if (!searchText) { return items }\r\n const searchTextLowerCase = searchText.toLowerCase()\r\n if (keys && keys.length) {\r\n const result = items.filter(it => {\r\n if (it.profileDetails) {\r\n return it['profileDetails']['personalDetails'][keys[0]].toLowerCase().includes(searchTextLowerCase)\r\n }\r\n if (it.personalDetails) {\r\n return it['personalDetails'][keys[0]].toLowerCase().includes(searchTextLowerCase)\r\n }\r\n if (it.fullName) {\r\n return it.fullName.toLowerCase().includes(searchTextLowerCase)\r\n }\r\n // keys.map((key: any) => {\r\n // console.log('key:', key)\r\n // console.log(`it['personalDetails'][key]`, it['personalDetails'][key])\r\n // return it['personalDetails'][key].toLowerCase().includes(searchTextLowerCase)\r\n // })\r\n })\r\n if (result && result.length <= 0) {\r\n return [-1]\r\n }\r\n return result\r\n }\r\n return items.filter(it => {\r\n return it.title.toLowerCase().includes(searchTextLowerCase)\r\n })\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeFilterSearchPipe } from './pipe-filter-search.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeFilterSearchPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeFilterSearchPipe],\r\n})\r\nexport class PipeFilterSearchModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeListFilter',\r\n})\r\nexport class PipeListFilterPipe implements PipeTransform {\r\n\r\n transform(value: any, keys: string, term: string): string {\r\n if (!term) {\r\n return value\r\n }\r\n return (value || []).filter((item: any) => keys.split(',')\r\n .some(key => item.hasOwnProperty(key)\r\n && item[key] && (`${item[key]} `).toLocaleLowerCase().includes(term.toLocaleLowerCase())))\r\n // new RegExp(`^${term}$`, 'gi').test(item[key])\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeListFilterPipe } from './pipe-list-filter.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeListFilterPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeListFilterPipe],\r\n})\r\nexport class PipeListFilterModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeRelativeTime',\r\n})\r\nexport class PipeRelativeTimePipe implements PipeTransform {\r\n transform(value: number): string {\r\n if (value) {\r\n return moment((new Date(value))).fromNow()\r\n }\r\n return moment().startOf('hour').fromNow()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeRelativeTimePipe } from './pipe-relative-time.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeRelativeTimePipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeRelativeTimePipe],\r\n})\r\nexport class PipeRelativeTimeModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport { orderBy } from 'lodash'\r\n\r\n@Pipe({\r\n name: 'orderBy',\r\n})\r\n\r\nexport class OrderByPipe implements PipeTransform {\r\n transform = orderBy\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { OrderByPipe } from './pipe-order-by.pipe'\r\n\r\n@NgModule({\r\n declarations: [OrderByPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [OrderByPipe],\r\n})\r\nexport class PipeOrderByModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeLimitTo',\r\n})\r\nexport class PipeLimitToPipe implements PipeTransform {\r\n\r\n transform(data: any, limit: number = 5): any {\r\n if (!data || !data.length) {\r\n return null\r\n }\r\n if (Array.isArray(data)) {\r\n return data.slice(0, limit)\r\n }\r\n if (typeof data === 'string') {\r\n const slicedString = data.substr(0, limit)\r\n if (limit < data.length) {\r\n return `${slicedString}...`\r\n }\r\n return slicedString\r\n }\r\n return null\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeLimitToPipe } from './pipe-limit-to.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeLimitToPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeLimitToPipe],\r\n})\r\nexport class PipeLimitToModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\ninterface IUserName {\r\n firstName: string\r\n // lastName: string\r\n email: string\r\n}\r\n\r\n@Pipe({\r\n name: 'pipeNameTransform',\r\n})\r\nexport class PipeNameTransformPipe implements PipeTransform {\r\n\r\n transform(value: IUserName): string {\r\n let result = ''\r\n if (value.firstName) {\r\n result += value.firstName\r\n }\r\n // if (value.lastName && value.lastName !== value.firstName) {\r\n // result += ` ${value.lastName}`\r\n // }\r\n if (result.trim() !== '') {\r\n return result\r\n }\r\n if (value.email) {\r\n return value.email\r\n }\r\n return 'Anonymous User'\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeNameTransformPipe } from './pipe-name-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeNameTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeNameTransformPipe],\r\n})\r\nexport class PipeNameTransformModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipePartialContent',\r\n})\r\nexport class PipePartialContentPipe implements PipeTransform {\r\n\r\n transform(value: any, keys: string[]): any {\r\n const result: { [key: string]: any } = {}\r\n for (const key of keys) {\r\n if (value[key]) {\r\n result[key] = value[key]\r\n }\r\n }\r\n return result\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipePartialContentPipe } from './pipe-partial-content.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipePartialContentPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipePartialContentPipe],\r\n})\r\nexport class PipePartialContentModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser'\r\n\r\n@Pipe({\r\n name: 'pipeSafeSanitizer',\r\n})\r\nexport class PipeSafeSanitizerPipe implements PipeTransform {\r\n\r\n constructor(protected sanitizer: DomSanitizer) { }\r\n public transform(\r\n value: string,\r\n type: string = 'html',\r\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n switch (type) {\r\n case 'html':\r\n return this.sanitizer.bypassSecurityTrustHtml(value)\r\n case 'style':\r\n return this.sanitizer.bypassSecurityTrustStyle(value)\r\n case 'script':\r\n return this.sanitizer.bypassSecurityTrustScript(value)\r\n case 'url':\r\n return this.sanitizer.bypassSecurityTrustUrl(value)\r\n case 'resourceUrl':\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value)\r\n default:\r\n throw new Error(`Invalid safe type specified: ${type}`)\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeSafeSanitizerPipe } from './pipe-safe-sanitizer.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeSafeSanitizerPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeSafeSanitizerPipe],\r\n})\r\nexport class PipeSafeSanitizerModule { }\r\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipePublicURL',\n})\nexport class PipePublicURL implements PipeTransform {\n environment: any\n constructor(@Inject('environment') environment: any) {\n this.environment = environment\n }\n transform(value: string): any {\n // Karmayogi content to be modified with the domain specific url\n // https://portal.karmayogi.nic.in/content-store/content/do_113918818243969024137/artifact/\n // do_113918818243969024137_1699074493067_effectivecommunication1699074492860.jpg\n if (value && value.includes('/content') && value.includes('do_')) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n // CIOS content has direct S3 url like blow, so return same url\n // https://s3.amazonaws.com/ecornell/content/On-Demand/Homepages/Banners/CEPL503-OD3_homepage-banner_v1.jpg\n return value\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipePublicURL } from './pipe-public-URL.pipe'\n\n@NgModule({\n declarations: [PipePublicURL],\n imports: [\n CommonModule,\n ],\n exports: [PipePublicURL],\n})\nexport class PipePublicURLModule { }\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeCertImageURL',\n})\nexport class PipeCertificateImageURL implements PipeTransform {\n environment: any\n constructor(@Inject('environment') environment: any) {\n this.environment = environment\n }\n transform(value: string): any {\n if (value.indexOf(this.environment.contentHost) < 0) {\n if (value.indexOf('/public/content') > -1) {\n if (value.indexOf('/content/content') === -1 || value.indexOf('/content/collection') === -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.certificateassets}/content${mainUrl}`\n return value ? finalURL : ''\n }\n }\n\n if (value.indexOf('/public/content') === -1) {\n if (value.indexOf('/content/content') > -1 || value.indexOf('/igot/content') > -1 || value.indexOf('/content-store/content') > -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotprod/collection') > -1) {\n const mainUrl = value && value.split('/igotprod').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotprod/content') > -1) {\n const mainUrl = value && value.split('/igotprod').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotuat/collection') > -1) {\n const mainUrl = value && value.split('/igotuat').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotuat/content') > -1) {\n const mainUrl = value && value.split('/igotuat').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igot/collection') > -1) {\n const mainUrl = value && value.split('/igot').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igot/content') > -1) {\n const mainUrl = value && value.split('/igot').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igot/profileImage') > -1) {\n const mainUrl = value && value.split('/igot').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotqa/profileImage') > -1) {\n const mainUrl = value && value.split('/igotqa').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotuat/profileImage') > -1) {\n const mainUrl = value && value.split('/igotuat').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotprod/profileImage') > -1) {\n const mainUrl = value && value.split('/igotprod').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/content/collection') > -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/content/content') === -1 || value.indexOf('/content/collection') === -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n\n if (this.environment && this.environment.bucketName) {\n if (value.indexOf(`/${this.environment.bucketName}/profileImage`) > -1) {\n const mainUrl = value && value.split(`/${this.environment.bucketName}`).pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf(`/${this.environment.bucketName}/content`) > -1) {\n const mainUrl = value && value.split(`/${this.environment.bucketName}`).pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf(`/${this.environment.bucketName}/collection`) > -1) {\n const mainUrl = value && value.split(`/${this.environment.bucketName}`).pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n }\n\n }\n } else {\n return value\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeCertificateImageURL } from './pipe-certimage-URL.pipe'\n\n@NgModule({\n declarations: [PipeCertificateImageURL],\n imports: [\n CommonModule,\n ],\n exports: [PipeCertificateImageURL],\n})\nexport class PipeCertificateImageURLModule { }\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n@Pipe({\n name: 'PipeNicRelative',\n})\nexport class PipeNicRelativePipe implements PipeTransform {\n environment: any\n constructor(@Inject('environment') environment: any) {\n this.environment = environment\n }\n transform(value: any): string {\n return value ? this.generateUrl(value) : ''\n\n }\n\n generateUrl(oldUrl: string) {\n const chunk = oldUrl ? oldUrl.split('/') : []\n const newChunk = this.environment.azureHost.split('/')\n const newLink = []\n for (let i = 0; i < chunk.length; i += 1) {\n if (i === 2) {\n newLink.push(newChunk[i])\n } else if (i === 3) {\n newLink.push(this.environment.azureBucket)\n } else {\n newLink.push(chunk[i])\n }\n }\n const newUrl = newLink.join('/')\n return newUrl\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeNicRelativePipe } from './pipe-nic-relative.pipe'\n\n@NgModule({\n declarations: [PipeNicRelativePipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeNicRelativePipe],\n})\nexport class PipeNicRelativeModule { }\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeCourseName',\n})\nexport class PipeCourseNamePipe implements PipeTransform {\n\n transform(value: any) {\n const fullname = value.split(',')\n\n return fullname[1]\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeCourseNamePipe } from './pipe-coursename.pipe'\n@NgModule({\n declarations: [PipeCourseNamePipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeCourseNamePipe],\n})\nexport class PipeCourseNameModule {\n}\n","import { Injectable } from '@angular/core'\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'\r\nimport { Observable, of } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, catchError } from 'rxjs/operators'\r\nimport { UtilityService } from '../services/utility.service'\r\nimport { ConfigurationsService } from '../services/configurations.service'\r\nimport { IResolveResponse } from './resolver.model'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExploreDetailResolve\r\n implements\r\n Resolve<\r\n | Observable<IResolveResponse<any>>\r\n | IResolveResponse<any>\r\n > {\r\n private baseUrl = this.configSvc.sitePath\r\n isIntranetAllowedSettings = false\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService,\r\n private utilitySvc: UtilityService,\r\n ) { }\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n _state: RouterStateSnapshot,\r\n ): Observable<IResolveResponse<any>> {\r\n this.isIntranetAllowedSettings = this.configSvc.isIntranetAllowed\r\n const tag = decodeURIComponent(route.params.tags)\r\n let url = ''\r\n if (route.data.pageUrl) {\r\n url = route.data.pageUrl\r\n }\r\n if (route.data.pageType === 'page' && route.data.pageKey) {\r\n url = `${this.baseUrl}/page/${route.data.pageKey}.json`\r\n }\r\n return this.http.get(url).pipe(\r\n map(pageData => ({ data: this.transformPageData(pageData, tag), error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }\r\n\r\n private transformPageData(pageData: any, tag: string) {\r\n const DELIMITER = '>'\r\n const path = tag.split(DELIMITER)\r\n pageData.pageLayout.widgetData.widgets = pageData.pageLayout.widgetData.widgets.map((widget: any) => {\r\n if (pageData.navigationBar && pageData.navigationBar.links) {\r\n pageData.navigationBar.links = pageData.navigationBar.links\r\n .filter((link: any) => link.widgetData.tags === tag)\r\n }\r\n\r\n if (widget.widgetSubType === 'cardBreadcrumb') {\r\n widget.widgetData.path = [{\r\n text: pageData.navigationBar.pageTitle,\r\n clickUrl: pageData.navigationBar.pageBackLink,\r\n }].concat(path.map((edge: string, idx: number) => ({\r\n text: edge,\r\n clickUrl: `/page/explore/${path.slice(0, idx + 1).join(DELIMITER)}`,\r\n })))\r\n }\r\n\r\n if (widget.widgetSubType === 'contentStripMultiple') {\r\n widget.widgetData.strips = widget.widgetData.strips.map((strip: any) => {\r\n strip.request.searchV6.filters[0].andFilters.push({ catalogPaths: [tag] })\r\n if (this.utilitySvc.isMobile && !this.isIntranetAllowedSettings) {\r\n strip.request.searchV6.filters[0].andFilters.push({ isInIntranet: ['false'] })\r\n }\r\n return strip\r\n })\r\n if (widget.widgetData.noDataWidget && widget.widgetData.noDataWidget.widgetData.strips) {\r\n widget.widgetData.noDataWidget.widgetData.strips = widget.widgetData.noDataWidget.widgetData.strips.map((strip: any) => {\r\n strip.request.searchV6.filters[0].andFilters.push({ catalogPaths: [tag] })\r\n if (this.utilitySvc.isMobile && !this.isIntranetAllowedSettings) {\r\n strip.request.searchV6.filters[0].andFilters.push({ isInIntranet: ['false'] })\r\n }\r\n return strip\r\n })\r\n }\r\n\r\n }\r\n return widget\r\n })\r\n\r\n return pageData\r\n }\r\n}\r\n","import { ThemePalette } from '@angular/material'\r\nimport { NsAppsConfig } from '../services/configurations.model'\r\nimport { NsWidgetResolver } from '../services/widget-resolver.model'\r\n\r\nexport namespace NsPage {\r\n export interface IPage {\r\n contentType: string\r\n primaryCategory?: string\r\n navigationBar: INavBar\r\n pageLayout: NsWidgetResolver.IRenderConfigWithAnyData\r\n tourGuide?: string[][]\r\n }\r\n\r\n export interface INavBar {\r\n links: NsWidgetResolver.IRenderConfigWithTypedData<INavLink>[]\r\n xsmallNonMenuLinks: NsWidgetResolver.IRenderConfigWithTypedData<INavLink>[]\r\n pageBackLink: string\r\n pageTitle: string\r\n background: INavBackground\r\n }\r\n export interface INavBackground {\r\n color: 'primary' | 'accent' | 'warn' | 'default'\r\n styles: { [id: string]: string }\r\n }\r\n\r\n export interface INavLink {\r\n config: Pick<INavLinkConfig<'card-full' | 'card-small'>, 'type' | 'hideStatus'> |\r\n Pick<INavLinkConfig<'mat-icon-button' | 'mat-fab' | 'mat-mini-fab' | 'card-mini'>, 'type'> |\r\n Pick<INavLinkConfig<'mat-button' | 'mat-raised-button' | 'mat-flat-button' | 'mat-stroked-button'>, 'type' | 'hideIcon' | 'hideTitle'> |\r\n Pick<INavLinkConfig<'mat-menu-item'>, 'type'> |\r\n Pick<INavLinkConfig<'feature-item'>, 'type' | 'useShortName' | 'iconColor' | 'treatAsCard' | 'hidePin'>\r\n actionBtnId?: string\r\n actionBtn?: NsAppsConfig.IFeature\r\n actionBtnName?: string\r\n }\r\n\r\n export interface INavLinkConfig<T> {\r\n type: T\r\n hideIcon?: boolean\r\n hideTitle?: boolean\r\n hideStatus?: boolean\r\n hidePin?: boolean\r\n iconColor?: ThemePalette\r\n treatAsCard?: boolean\r\n useShortName?: boolean\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'\r\nimport { Observable, of } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, catchError } from 'rxjs/operators'\r\nimport { IResolveResponse } from './resolver.model'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MarketingOfferingResolve\r\n implements\r\n Resolve<\r\n | Observable<IResolveResponse<any>>\r\n | IResolveResponse<any>\r\n > {\r\n constructor(\r\n private http: HttpClient,\r\n ) { }\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n _state: RouterStateSnapshot,\r\n ): Observable<IResolveResponse<any>> {\r\n const tag = route.params.tag\r\n return this.http.get(route.data.pageUrl).pipe(\r\n map(pageData => ({ data: this.transformPageData(pageData, tag), error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }\r\n\r\n private transformPageData(pageData: any, tag: string) {\r\n pageData.pageLayout.widgetData.widgets = pageData.pageLayout.widgetData.widgets.map((widget: any) => {\r\n if (widget.widgetSubType === 'contentStripMultiple') {\r\n widget.widgetData.strips = widget.widgetData.strips.map((strip: any) => {\r\n strip.request.search.filters.catalogPaths = [decodeURIComponent(tag)]\r\n return strip\r\n })\r\n }\r\n\r\n return widget\r\n })\r\n\r\n return pageData\r\n }\r\n}\r\n","export const JSON_MAP: any = {\r\n pagename: 'lexid',\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core'\r\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router'\r\nimport { forkJoin, Observable, of, EMPTY } from 'rxjs'\r\nimport { catchError, map, mergeMap } from 'rxjs/operators'\r\nimport { ConfigurationsService } from '../services/configurations.service'\r\nimport { JSON_MAP } from './page.constant'\r\nimport { NsPage } from './page.model'\r\nimport { IResolveResponse } from './resolver.model'\r\nimport { NsContent } from '../services/widget-content.model'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PageResolve implements Resolve<IResolveResponse<NsPage.IPage>> {\r\n private baseUrl = this.configSvc.sitePath\r\n constructor(\r\n private configSvc: ConfigurationsService,\r\n private http: HttpClient,\r\n @Inject(LOCALE_ID) private locale: string,\r\n ) { }\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n ): Observable<IResolveResponse<NsPage.IPage>> | IResolveResponse<NsPage.IPage> {\r\n if (route.data.pageUrl) {\r\n return this.getData(route.data.pageUrl)\r\n }\r\n if (route.data.pageType === 'feature' && route.data.pageKey) {\r\n return this.getData(`${this.baseUrl}/feature/${route.data.pageKey}`)\r\n }\r\n if (\r\n route.data.pageType === 'page' &&\r\n route.data.pageKey &&\r\n route.paramMap.has(route.data.pageKey)\r\n ) {\r\n return this.getData(`${this.baseUrl}/page/${route.paramMap.get(route.data.pageKey)}`)\r\n }\r\n if (\r\n route.data.pageType === 'page' &&\r\n route.data.pageKey &&\r\n (route.data.pageKey === 'toc' || route.data.pageKey === 'home')\r\n ) {\r\n return this.getData(`${this.baseUrl}/page/${route.data.pageKey}`)\r\n }\r\n return {\r\n data: null,\r\n error: 'CONFIGURATION_ERROR_PAGE_URL_NOT_FORMED',\r\n }\r\n }\r\n\r\n private setS3Cookie(_contentId: string): Observable<any> {\r\n // return this.http.post(`/apis/protected/v8/content/setCookie`, { contentId }).pipe(\r\n // catchError(_err => of(true)),\r\n // )\r\n return EMPTY\r\n }\r\n\r\n private getContent(id: string) {\r\n return this.http\r\n .post<NsContent.IContent>(\r\n `/apis/protected/v8/content/${id}?hierarchyType=minimal`,\r\n ['status', 'artifactUrl'],\r\n )\r\n }\r\n\r\n private getData(url: string) {\r\n const id = (url.split('/').pop() as string).split('.')[0] || ''\r\n const equivalentId = id.startsWith('lex_auth_') ? id : JSON_MAP[id]\r\n if (equivalentId) {\r\n return forkJoin([this.setS3Cookie(equivalentId), this.getContent(equivalentId)]).pipe(\r\n mergeMap(([_, v]) => {\r\n if (v.status === 'Expired' || v.status === 'Deleted' || !v.artifactUrl) {\r\n return of({ data: null, error: 'NoContent' })\r\n }\r\n return this.http\r\n .get<NsPage.IPage>(`${v.artifactUrl}?ts=${new Date().getTime()}`)\r\n .pipe(\r\n map(data => ({ data, error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }\r\n const pageRequest = [\r\n (equivalentId ? this.setS3Cookie(equivalentId) : of(true)).pipe(\r\n mergeMap(() =>\r\n this.http.get<NsPage.IPage>(`${url}.json`).pipe(\r\n map(data => ({ data, error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n ),\r\n ),\r\n ),\r\n this.locale === 'en' || this.locale === 'en-US' ?\r\n of({ data: undefined as any, error: null }) :\r\n this.http.get<NsPage.IPage>(`${url}.${this.locale}.json`).pipe(\r\n map(data => ({ data, error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n ),\r\n ]\r\n return forkJoin(pageRequest).pipe(\r\n map(\r\n ([general, withLocale]): IResolveResponse<NsPage.IPage> => {\r\n if (withLocale.data) {\r\n return withLocale\r\n }\r\n return general\r\n },\r\n ),\r\n )\r\n }\r\n\r\n}\r\n","import { NsPage } from '../resolvers/page.model'\nimport { NsWidgetResolver } from './widget-resolver.model'\nexport namespace NsInstanceConfig {\n export interface IConfig {\n authoring: {\n doUniqueCheck: boolean\n isMultiStepFlow: boolean\n allowExpiry: boolean\n allowRestore: boolean\n allowReview: boolean\n allowPublish: boolean\n allowRedo: boolean\n newDesign: boolean\n allowedContentType: string[]\n urlPatternMatching: {\n allowReplace: boolean\n source: string\n pattern: string\n allowIframe: boolean\n }[]\n }\n appSetup: boolean\n chatBotUrl: string\n defaultFontsize: string\n defaultThemeClass: string\n defaultLocale: string\n disablePidCheck?: boolean\n isMultilingualEnabled?: boolean\n fontSizes: IFontSize[]\n isContentDownloadAvailable: boolean\n indexHtmlMeta: IIndexHtmlMeta\n keycloak: IKeycloak\n locals: ILocalsConfig[]\n microsoft: IMicrosoft\n telemetryConfig: ITelemetryConfig\n themes: ITheme[]\n logos: ILogos\n sources?: ISourceLogo[]\n mailIds: IMailIds\n details: IDetails\n validMailIdExtensionsForMailMe: string[]\n overrideThemeChanges: IOverrideThemeChanges\n defaultFeatureConfigs: {\n error: string\n }\n backgrounds: {\n primaryNavBar: NsPage.INavBackground\n pageNavBar: NsPage.INavBackground\n }\n featuredApps: string[]\n primaryNavBarConfig: IPrimaryNavbarConfig\n org: string[]\n rootOrg: string\n intranetIframeUrls?: string[]\n showNavBarInSetup?: boolean\n intranetUrlToCheck?: string\n introVideo: IPath\n tourVideo: IPath\n isDownloadableSource?: IPath\n isDownloadableIosResource?: IPath\n isDownloadableAndroidResource?: IPath\n sourceFieldsUserAutocomplete?: string[]\n forgotPasswordConfig?: IForgotPassword\n hubs: IHubs[]\n courseContentPath?: string\n portalUrls: IPortalUrls | undefined\n positions: any\n websitelanguages: any[]\n profileTimelyNudges: any,\n npsCategory?: string\n }\n export interface IPortalUrls {\n igot: string,\n spv: string,\n mdo: string,\n cbc: string,\n cbp: string,\n frac: string\n }\n export interface IForgotPassword {\n local?: string\n enterprise?: string\n social?: string\n }\n export interface ISourceLogo {\n sourceName?: string\n sourceId?: string\n logo?: string\n }\n export interface IPath {\n [key: string]: string\n }\n export interface IHubs {\n active: boolean\n desc: string\n hubname: string\n icon: string\n path: string,\n order: number\n }\n export interface IIndexHtmlMeta {\n description?: string\n openSearchUrl?: string\n webmanifest: string\n xIcon?: string\n pngIcon?: string\n }\n export interface IFontSize {\n baseFontSize: string\n fontClass: string\n scale: number\n }\n export interface IKeycloak {\n defaultidpHint: 'E' | 'N' | 'S'\n isLoginHidden: boolean\n bearerExcludedUrls: string[]\n clientId: string\n key: string\n realm: string\n url: string\n changePasswordUrl?: string\n onLoad?: 'check-sso' | 'login-required'\n }\n export interface ILocalsConfig {\n isAvailable: boolean\n isEnabled: boolean\n locals: string[]\n path: string\n isRTL: boolean\n }\n export interface IMicrosoft {\n clientId: string\n defaultEmailId: string\n tenant: string\n validEmailExtensions: string[]\n isConfigured: boolean\n }\n export interface ITheme {\n color: IThemeColor\n themeFile: string\n themeClass: string\n themeName: string\n }\n\n export interface IThemeColor {\n accent: string\n primary: string\n warn: string\n }\n export interface IOverrideThemeChanges {\n isEnabled: boolean\n desktop: IDesktop\n mWeb: IMWeb\n }\n export interface IDesktop {\n animationDuration: number\n logoUrl: string\n logoText: string\n logoDisplayTime: number\n backgroundTheme: string\n }\n export interface IMWeb {\n logoUrl: string\n logoText: string\n }\n export interface ILogos {\n app: string\n appTransparent: string\n appSecondary: string\n aboutFooter: string\n aboutHeader: string\n appBottomNav?: string\n company: string\n developedBy: string\n poweredBy: string\n defaultContent?: string\n defaultSourceLogo?: string\n landingLogo: string\n navbarLogo?: string\n playListLogo?: string\n thumpsUp?: string\n\n }\n export interface IMailIds {\n contactUs: string\n default: string\n support: string\n }\n export interface IDetails {\n appName: string\n }\n export interface IPrimaryNavbarConfig {\n mediumScreen: IPrimaryNavBarScreen\n smallScreen: IPrimaryNavBarScreen\n }\n interface IPrimaryNavBarScreen {\n left: IPrimaryNavBarSide[]\n right: IPrimaryNavBarSide[]\n }\n interface IPrimaryNavBarSide {\n type: 'widgetButton' | 'featureButton'\n config: NsWidgetResolver.IRenderConfigWithAnyData | NsPage.INavLink\n }\n\n export interface ITelemetryConfig {\n pdata: {\n id: string\n ver: string\n pid: string\n }\n object: {\n ver: string\n id: string | undefined\n }\n uid: string | null\n authtoken?: string\n env: string\n channel: string\n batchsize: number\n host: string\n endpoint: string\n apislug: string\n sid: string\n publicEndpoint: string\n protectedEndpoint: string\n }\n}\n\nexport namespace NsAppsConfig {\n export type TIconType = 'mat-icon' | 'url'\n\n export interface IAppsConfig {\n groups: IGroup[]\n features: { [id: string]: IFeature }\n tourGuide?: string[][]\n }\n\n export interface IGroup {\n id: string\n iconType: string\n icon: string\n keywords: string[]\n name: string\n toolTip: string\n featureIds: string[]\n stripBackground?: string\n hasRole: string[]\n }\n\n // export interface IGroupWithFeatures extends IGroup {\n // features: IFeature[]\n // }\n export interface IFeature {\n name: string\n id: string\n url: string\n permission: string | string[] | { all: string[]; some: string[]; none: string[] }\n iconType: TIconType\n icon: string\n keywords: string[]\n toolTip: string\n accessKey: string\n status?: 'earlyAccess' | 'live' | 'alpha' | 'beta'\n shortName: string\n description?: string\n badgeEndpoint?: string\n mobileAppFunction?: string\n color?: string\n target?: string\n }\n}\n\nexport namespace NsUser {\n export interface IUserProfile {\n userId: string\n email?: string\n departmentName?: string\n userName?: string\n firstName?: string\n surName?: string\n middleName?: string\n lastName?: string\n rootOrgId?: string\n rootOrgName?: string\n profileImage?: string\n givenName?: string\n country?: null | string\n unit?: string | null\n source_profile_picture?: null | string\n dealerCode?: null | string\n isManager?: boolean\n competencies?: any\n systemTopics?: any\n desiredTopics?: any\n desiredCompetencies?: any\n userRoles?: any\n profileUpdateCompletion?: number\n profileImageUrl?: string\n professionalDetails?: any\n webPortalLang?: any,\n departmentImg?: any\n }\n\n export interface INodebbUserProfile {\n username: string\n email: string\n }\n\n export interface IUserPidProfile {\n kid_updated: boolean\n user: IUser\n }\n\n export interface IUserPidProfileV2 {\n kid_updated: boolean\n result: {\n response: IUserV2\n }\n }\n\n export interface IUserPidProfileVer2 {\n result: {\n UserProfile: IUserVer2\n }\n }\n interface ISourceData {\n GID: string\n SNAMPRE: string\n SNAMADD: string\n LASTNAME: string\n SN: string\n GIVENNAME: string\n NICKNAME: string\n PREFERREDSN: string\n PERSONALTITLE: string\n MOBILE: string\n MAIL: string\n DEPARTMENTTEXT: string\n COSTLOCATIONUNIT: string\n COSTLOCATION: string\n ORGID: string\n MGMTRESP: string\n UTC: string\n CNAMEENG: string\n LNAMEINT: string\n USERTYPE: string\n STATUS: string\n CONTRACTSTATUS: string\n }\n\n interface IUser {\n wid: string\n root_org: string\n org: string\n is_active?: any\n account_expiry_date?: any\n kid: string\n imported_source_name: string\n source_id: string\n username?: any\n first_name: string\n last_name: string\n middle_name?: any\n known_as: string\n salutation?: any\n email: string\n gender?: any\n dob?: any\n languages_known?: any\n preferred_language?: any\n source_profile_picture?: any\n residence_country: string\n residence_state?: any\n residence_city: string\n contact_phone_number_office?: any\n contact_phone_number_home?: any\n contact_phone_number_personal: string\n employement_status?: any\n contract_type?: any\n job_title?: any\n job_role?: any\n department_name: string\n unit_name?: any\n organization_location_country?: any\n organization_location_state?: any\n organization_location_city?: any\n time_inserted: Date\n time_updated: Date\n json_unmapped_fields?: any\n source_data: ISourceData\n }\n interface IRootOrg {\n dateTime: string\n preferredLanguage: string\n keys: {}\n channel: string\n approvedBy: string\n description: string\n updatedDate: string\n addressId: string\n orgType: string\n provider: string\n orgCode: string\n locationId: string\n theme: string\n id: string\n isApproved: boolean\n communityId: string\n slug: string\n email: string\n isSSOEnabled: boolean\n thumbnail: string\n updatedBy: string\n orgName: string\n locationIds: []\n externalId: string\n isRootOrg: boolean\n rootOrgId: string\n imgUrl: string\n approvedDate: string\n orgTypeId: string\n homeUrl: string\n isDefault: boolean\n createdDate: string\n contactDetail: string\n parentOrgId: string\n createdBy: string\n hashTagId: string\n noOfMembers: string\n status: number\n }\n interface IOrg {\n updatedBy: string\n organisationId: string\n orgName: string\n addedByName: string\n addedBy: string\n roles: string[]\n approvedBy: string\n updatedDate: string\n userId: string\n approvaldate: string\n isDeleted: boolean\n parentOrgId: string\n hashTagId: string\n isRejected: boolean\n position: string\n id: string\n orgjoindate: string\n isApproved: boolean\n orgLeftDate: string\n }\n interface IUserV2 {\n surName: any\n maskedPhone: string\n rootOrgName: string\n subject: []\n channel: string\n language: []\n updatedDate: string\n managedBy: string\n flagsValue: number\n id: string\n recoveryEmail: string\n identifier: string\n thumbnail: string\n profileVisibility: []\n updatedBy: string\n accesscode: string\n locationIds: []\n externalIds: []\n registryId: string\n rootOrgId: string\n prevUsedEmail: string\n firstName: string\n tncAcceptedOn: string\n phone: string\n dob: string\n grade: []\n currentLoginTime: string\n userType: string\n status: number\n lastName: string\n gender: string\n roles: string[]\n prevUsedPhone: string\n stateValidated: boolean\n isDeleted: boolean\n organisations: IOrg[]\n countryCode: string\n maskedEmail: string\n tempPassword: string\n email: string\n rootOrg: IRootOrg\n profileSummary: string\n phoneVerified: boolean\n recoveryPhone: string\n userName: string\n userId: string\n lastLoginTime: string\n emailVerified: true\n framework: {}\n createdDate: string\n createdBy: string\n location: string\n tncAcceptedVersion: string\n }\n\n interface IUserVer2 {\n 'firstname': string,\n 'motherTongue': string,\n 'secondaryEmail': string,\n 'gender': string,\n '@type': string,\n 'mobile': number,\n 'middlename': string,\n 'telephone': number,\n 'osid': string,\n 'primaryEmailType': string,\n 'knownLanguages': ILanguages[],\n 'wid': string,\n 'nationality': string,\n 'surname': string,\n 'dob': string,\n 'category': string,\n 'primaryEmail': string,\n 'maritalStatus': string,\n 'residenceAddress': string,\n 'result': any\n }\n export interface ILanguages {\n name: string\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PageNameResolve implements Resolve<any> {\n constructor(\n ) { }\n resolve(\n route: ActivatedRouteSnapshot,\n ): string {\n if (route.data.pageUrl) {\n return route.data.pageUrl\n }\n if (route.data.pageType === 'feature' && route.data.pageKey) {\n return `${route.data.pageKey}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.paramMap.has(route.data.pageKey)\n ) {\n return `${route.paramMap.get(route.data.pageKey)}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.data.pageKey === 'toc'\n ) {\n return `${route.data.pageKey}`\n }\n return 'common module'\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModuleNameResolve implements Resolve<any> {\n moduleName: any = ''\n constructor(\n ) { }\n resolve(\n route: ActivatedRouteSnapshot,\n ): string {\n if (route.data.pageUrl) {\n return route.data.pageUrl\n }\n if (route.data.pageType === 'feature' && route.data.pageKey) {\n return `${route.data.pageKey}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.paramMap.has(route.data.pageKey)\n ) {\n this.moduleName = route.paramMap.get(route.data.pageKey)\n return `${this.moduleName.charAt(0).toUpperCase() + this.moduleName.slice(1)}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.data.pageKey === 'toc'\n ) {\n return `${route.data.pageKey}`\n }\n return 'common module'\n }\n}\n","export namespace NsContent {\r\n export interface IContinueLearningData extends IContent {\r\n continueData: any\r\n }\r\n\r\n export interface IContent {\r\n platform?: any\r\n addedOn: string\r\n appIcon: string\r\n artifactUrl: string\r\n averageRating?: any\r\n body?: string\r\n certificationList?: IRelatedContentMeta[]\r\n certificationStatus?: TCertificationStatus\r\n certificationSubmissionDate?: string\r\n certificationUrl: string\r\n children: IContent[]\r\n childrenClassifiers?: string[]\r\n clients?: IClient[]\r\n collections?: IContent[]\r\n complexityLevel: string\r\n contentId: string\r\n contentType: EContentTypes\r\n difficultyLevel: string\r\n primaryCategory: EPrimaryCategory\r\n contentUrlAtSource: string\r\n creatorContacts: ICreator[]\r\n\r\n creatorDetails: ICreator[]\r\n creatorLogo: string\r\n creatorPosterImage: string\r\n creatorThumbnail: string\r\n\r\n curatedTags: string[]\r\n description: string\r\n displayContentType: EDisplayContentTypes // For UI\r\n downloadUrl?: string\r\n duration: number\r\n exclusiveContent?: boolean\r\n expiryDate?: string\r\n equivalentCertifications?: IRelatedContentMeta[]\r\n hasAccess: boolean\r\n hasAssessment?: string\r\n idealScreenSize?: string\r\n identifier: string\r\n introductoryVideo?: string\r\n introductoryVideoIcon?: string\r\n learningTrack?: string\r\n isExternal: boolean\r\n isIframeSupported: 'Yes' | 'No' | 'Maybe'\r\n isInIntranet?: boolean\r\n keywords?: string[]\r\n kArtifacts?: IRelatedContentMeta[]\r\n lastUpdatedOn: string\r\n learningMode?: TLearningMode\r\n learningObjective: string\r\n labels?: string[]\r\n locale?: string\r\n hasTranslations?: { identifier: string; locale: string }[]\r\n isTranslationOf?: { identifier: string; locale: string }[]\r\n me_totalSessionsCount: number\r\n mediaType: string\r\n mimeType: EMimeTypes\r\n miniGOTVersion?: string\r\n msArtifactDetails?: IMSArtifactDetails\r\n mode?: ETagType\r\n name: string\r\n nextCertificationAttemptDate?: string\r\n playgroundInstructions?: string\r\n playgroundResources?: IResourcePlayground[]\r\n postContents?: IPrePostContent[]\r\n posterImage?: string\r\n preContents?: IPrePostContent[]\r\n preRequisites: string\r\n price?: {\r\n currency: string\r\n value: number\r\n }\r\n proctorUrl?: string\r\n progress?: IMarkAsCompleteProgress\r\n programDuration?: any\r\n publishedOn: string\r\n recentCertificationAttemptScore?: number\r\n recommendationReasons?: string[]\r\n region?: string[]\r\n registrationUrl?: string\r\n registrationInstructions?: string\r\n resourceCategory?: string[]\r\n resourceType: string\r\n size?: number\r\n skills: ISkill[]\r\n softwareRequirements?: IResourceDetail[]\r\n sourceName: string\r\n sourceShortName: string\r\n sourceIconUrl?: string\r\n sourceUrl?: string\r\n ssoEnabled?: boolean\r\n status:\r\n | 'Draft'\r\n | 'InReview'\r\n | 'QualityReview'\r\n | 'Reviewed'\r\n | 'Processing'\r\n | 'Live'\r\n | 'Deleted'\r\n | 'MarkedForDeletion'\r\n | 'Expired'\r\n subTitle?: string\r\n subTitles?: ISubtitle[]\r\n studyMaterials?: IRelatedContentMeta[]\r\n systemRequirements?: string[]\r\n tags: ITag[]\r\n topics: IContentTopic[]\r\n totalLikes?: { [key: string]: number }\r\n totalRating?: number\r\n track: ITrack[]\r\n uniqueLearners?: number\r\n viewCount?: { [key: string]: number }\r\n reason?: string // required for Knowledge board\r\n trainingLHubCount?: number // for LHub trainings\r\n verifiers?: {\r\n // required for External Certifications\r\n name: string\r\n email: string\r\n id: string\r\n }[]\r\n references?: { url: string; title: string }[]\r\n resumePage?: number // For player WebModule in UI\r\n [key: string]: any\r\n optionalReading: boolean\r\n additionalTags?: string[]\r\n }\r\n\r\n export enum EPrimaryCategory {\r\n PROGRAM = 'Program',\r\n COURSE = 'Course',\r\n MODULE = 'Course Unit',\r\n RESOURCE = 'Learning Resource',\r\n GOALS = 'GOALS',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n COMP_ASSESSMENT = 'Competency Assessment',\r\n FTB_QUESTION = 'FTB Question',\r\n MTF_QUESTION = 'MTF Question',\r\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\r\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\r\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\r\n BLENDED_PROGRAM = 'Blended Program',\r\n OFFLINE_SESSION = 'Offline Session',\r\n // following will not be available soon\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n CHANNEL = 'Channel',\r\n }\r\n export interface IContentMinimal {\r\n appIcon: string\r\n artifactUrl: string\r\n complexityLevel: string\r\n contentType: EContentTypes\r\n primaryCategory: EPrimaryCategory\r\n description: string\r\n displayContentType?: EDisplayContentTypes\r\n duration: number\r\n identifier: string\r\n hasAccess?: boolean\r\n isInIntranet?: boolean\r\n learningMode?: TLearningMode\r\n mimeType: EMimeTypes\r\n name: string\r\n creatorDetails: ICreator[]\r\n creatorContacts: ICreator[]\r\n PosterImage?: string\r\n resourceType?: string\r\n totalRating?: number\r\n }\r\n\r\n export interface ICollectionHierarchyResponse {\r\n data: IContent\r\n hasMore: boolean\r\n totalContents: number\r\n }\r\n\r\n export interface IRelatedContentMeta {\r\n identifier: string\r\n name: string\r\n }\r\n\r\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt'\r\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed'\r\n\r\n interface IMarkAsCompleteProgress {\r\n progressStatus: 'open' | 'started' | 'completed'\r\n showMarkAsComplete: boolean\r\n markAsCompleteReason: string\r\n progressSupported: boolean\r\n progress: number | null\r\n }\r\n\r\n interface ITag {\r\n id: string\r\n type: string\r\n value: string\r\n }\r\n interface IMSArtifactDetails {\r\n channelId: string\r\n videoId: string\r\n }\r\n interface IClient {\r\n displayName: string\r\n id: string\r\n name: string\r\n }\r\n interface ISubtitle {\r\n srclang: string\r\n label: string\r\n url: string\r\n }\r\n interface IPrePostContent {\r\n identifier: string\r\n name: string\r\n }\r\n interface IResourceDetail {\r\n title?: string\r\n url?: string\r\n }\r\n interface IResourcePlayground {\r\n appIcon: string\r\n artifactUrl: string\r\n identifier: string\r\n name: string\r\n }\r\n interface ITrack {\r\n id: string\r\n name: string\r\n status: string\r\n visibility: string\r\n }\r\n interface ISkill {\r\n id: string\r\n category: string\r\n skill: string\r\n name: string\r\n }\r\n export interface ICreator {\r\n id: string\r\n name: string\r\n email: string\r\n }\r\n export interface IContentTopic {\r\n identifier: string\r\n name: string\r\n }\r\n // API Based\r\n\r\n export interface IContact {\r\n id: string\r\n name: string\r\n email: string\r\n }\r\n\r\n export interface IViewerContinueLearningRequest {\r\n resourceId: string\r\n contextPathId: string\r\n data: string\r\n dateAccessed: number\r\n contextType?: string\r\n }\r\n /**\r\n * @deprecated Enum EContentTypes should not be used in future\r\n */\r\n export enum EContentTypes {\r\n PROGRAM = 'Learning Path',\r\n CHANNEL = 'Channel',\r\n COURSE = 'Course',\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n MODULE = 'Collection',\r\n RESOURCE = 'Resource',\r\n }\r\n export enum EMiscPlayerSupportedCollectionTypes {\r\n PLAYLIST = 'Playlist',\r\n }\r\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\r\n EContentTypes.COURSE,\r\n EContentTypes.MODULE,\r\n EContentTypes.PROGRAM,\r\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\r\n ]\r\n export const KB_SUPPORTED_CONTENT_TYPES: EContentTypes[] = [\r\n EContentTypes.COURSE,\r\n EContentTypes.MODULE,\r\n EContentTypes.PROGRAM,\r\n EContentTypes.RESOURCE,\r\n ]\r\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EContentTypes[] = [\r\n EContentTypes.COURSE,\r\n EContentTypes.MODULE,\r\n EContentTypes.PROGRAM,\r\n EContentTypes.RESOURCE,\r\n ]\r\n export enum EMimeTypes {\r\n COLLECTION = 'application/vnd.ekstep.content-collection',\r\n HTML = 'application/html',\r\n ILP_FP = 'application/ilpfp',\r\n IAP = 'application/iap-assessment',\r\n M4A = 'audio/m4a',\r\n MP3 = 'audio/mpeg',\r\n MP4 = 'video/mp4',\r\n M3U8 = 'application/x-mpegURL',\r\n INTERACTION = 'video/interactive',\r\n PDF = 'application/pdf',\r\n QUIZ = 'application/quiz',\r\n DRAG_DROP = 'application/drag-drop',\r\n HTML_PICKER = 'application/htmlpicker',\r\n WEB_MODULE = 'application/web-module',\r\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\r\n YOUTUBE = 'video/x-youtube',\r\n HANDS_ON = 'application/integrated-hands-on',\r\n RDBMS_HANDS_ON = 'application/rdbms',\r\n CLASS_DIAGRAM = 'application/class-diagram',\r\n CHANNEL = 'application/channel',\r\n COLLECTION_RESOURCE = 'resource/collection',\r\n // Added on UI Only\r\n CERTIFICATION = 'application/certification',\r\n PLAYLIST = 'application/playlist',\r\n QUESTION_SET = 'application/vnd.sunbird.questionset',\r\n QUESTION = 'application/vnd.sunbird.question',\r\n UNKNOWN = 'application/unknown',\r\n OFFLINE_SESSION = 'application/offline',\r\n }\r\n export enum EDisplayContentTypes {\r\n ASSESSMENT = 'ASSESSMENT',\r\n AUDIO = 'AUDIO',\r\n CERTIFICATION = 'CERTIFICATION',\r\n CHANNEL = 'Channel',\r\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\r\n COURSE = 'COURSE',\r\n DEFAULT = 'DEFAULT',\r\n DRAG_DROP = 'DRAG_DROP',\r\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\r\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\r\n GOALS = 'GOALS',\r\n HANDS_ON = 'HANDS_ON',\r\n IAP = 'IAP',\r\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\r\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\r\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\r\n MODULE = 'MODULE',\r\n PDF = 'PDF',\r\n PLAYLIST = 'PLAYLIST',\r\n PROGRAM = 'PROGRAM',\r\n QUIZ = 'QUIZ',\r\n RESOURCE = 'RESOURCE',\r\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\r\n VIDEO = 'VIDEO',\r\n WEB_MODULE = 'WEB_MODULE',\r\n WEB_PAGE = 'WEB_PAGE',\r\n YOUTUBE = 'YOUTUBE',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n }\r\n // for UI\r\n export enum EFilterCategory {\r\n ALL = 'ALL',\r\n LEARN = 'LEARN',\r\n PRACTICE = 'PRACTICE',\r\n ASSESS = 'ASSESS',\r\n }\r\n\r\n // for UI\r\n export enum ETagType {\r\n NEWLY_ADDED = 'NEWLY ADDED',\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\nimport { Observable, of, EMPTY } from 'rxjs'\r\nimport { catchError, retry } from 'rxjs/operators'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { NsContentStripMultiple } from './content-strip-multiple.model'\r\nimport { NsContent } from './widget-content.model'\r\nimport { NSSearch } from './widget-search.model'\r\n\r\n// TODO: move this in some common place\r\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8'\r\n\r\nconst API_END_POINTS = {\r\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\r\n AUTHORING_CONTENT: `/apis/authApi/hierarchy`,\r\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\r\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\r\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\r\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\r\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\r\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\r\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\r\n CONTENT_SEARCH_V6: `${PROTECTED_SLAG_V8}/content/searchV6`,\r\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\r\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\r\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\r\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\r\n COLLECTION_HIERARCHY: (type: string, id: string) =>\r\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\r\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\r\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\r\n EXT_USER_COURSE_ENROLL: (contentId: any) => `/apis/proxies/v8/cios-enroll/v1/readby/useridcourseid/${contentId}`,\r\n EXT_CONTENT_EROLL: `/apis/proxies/v8/cios-enroll/v1/create`,\r\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n/**\r\n * @deprecated this will be depricated\r\n */\r\nexport class WidgetContentService {\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService\r\n ) { }\r\n\r\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\r\n // tslint:disable-next-line\r\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\r\n // return this.http.get(url).toPromise()\r\n if (url) { }\r\n return of().toPromise()\r\n }\r\n\r\n fetchContent(\r\n contentId: string,\r\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\r\n additionalFields: string[] = [],\r\n ): Observable<NsContent.IContent> {\r\n const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\r\n return this.http\r\n .post<NsContent.IContent>(url, { additionalFields })\r\n .pipe(retry(1))\r\n }\r\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\r\n const url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}`\r\n return this.http.get<NsContent.IContent>(url).pipe(retry(1))\r\n }\r\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\r\n return this.http.get<NsContent.IContent[]>(\r\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\r\n )\r\n }\r\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\r\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\r\n `${API_END_POINTS.COLLECTION_HIERARCHY(\r\n type,\r\n id,\r\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\r\n )\r\n }\r\n\r\n fetchContentLikes(contentIds: { content_id: string[] }) {\r\n return this.http\r\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\r\n .toPromise()\r\n }\r\n\r\n fetchContentRatings(contentIds: { contentIds: string[] }) {\r\n if (contentIds) { }\r\n // return this.http\r\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\r\n // .toPromise()\r\n return of().toPromise()\r\n }\r\n\r\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\r\n return this.http.get<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\r\n )\r\n }\r\n\r\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\r\n return new Promise(async resolve => {\r\n if (collectionType &&\r\n collectionType.toLowerCase() === 'playlist') {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({\r\n timestamp: Date.now(),\r\n contextFullPath: [collectionId, id],\r\n }),\r\n dateAccessed: Date.now(),\r\n contextType: 'playlist',\r\n }\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true)\r\n }\r\n )\r\n } else {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({ timestamp: Date.now() }),\r\n dateAccessed: Date.now(),\r\n }\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true)\r\n })\r\n }\r\n })\r\n }\r\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\r\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\r\n // return this.http.post<any>(url, content)\r\n if (content) {\r\n\r\n }\r\n return of() as any\r\n }\r\n\r\n setS3Cookie(\r\n _contentId: string,\r\n // _path: string,\r\n ): Observable<any> {\r\n // return this.http\r\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\r\n // .pipe(catchError(_err => of(true)))\r\n return EMPTY\r\n }\r\n\r\n setS3ImageCookie(): Observable<any> {\r\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)))\r\n }\r\n\r\n fetchManifest(url: string): Observable<any> {\r\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url })\r\n }\r\n fetchWebModuleContent(url: string): Observable<any> {\r\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`)\r\n }\r\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\r\n req.query = req.query || ''\r\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\r\n request: req,\r\n })\r\n }\r\n searchRegionRecommendation(\r\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\r\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\r\n req.query = req.query || ''\r\n req.preLabelValue =\r\n (req.preLabelValue || '') +\r\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '')\r\n req.filters = {\r\n ...req.filters,\r\n labels: [req.preLabelValue || ''],\r\n }\r\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\r\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\r\n { request: req },\r\n )\r\n }\r\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResult> {\r\n req.query = req.query || ''\r\n return this.http.post<NSSearch.ISearchV6ApiResult>(API_END_POINTS.CONTENT_SEARCH_V6, req)\r\n }\r\n\r\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\r\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`)\r\n }\r\n deleteContentRating(contentId: string): Observable<any> {\r\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`)\r\n }\r\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\r\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data)\r\n }\r\n /**\r\n *\r\n * @deprecated this will be depricated.\r\n */\r\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\r\n if (!(content.children || []).length) {\r\n return content\r\n }\r\n if (\r\n content.primaryCategory === 'Program' &&\r\n !(content.artifactUrl && content.artifactUrl.length)\r\n ) {\r\n const child = content.children[0]\r\n return this.getFirstChildInHierarchy(child)\r\n }\r\n if (\r\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\r\n ) {\r\n return content\r\n }\r\n const firstChild = content.children[0]\r\n const resultContent = this.getFirstChildInHierarchy(firstChild)\r\n return resultContent\r\n }\r\n\r\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\r\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise()\r\n }\r\n\r\n fetchConfig(url: string) {\r\n return this.http.get<any>(url)\r\n }\r\n\r\n fetchExtUserContentEnroll(contentId: string) {\r\n return this.http.get<any>(API_END_POINTS.EXT_USER_COURSE_ENROLL(contentId))\r\n }\r\n\r\n extContentEnroll(requestBody: any) {\r\n return this.http.post<any>(`${API_END_POINTS.EXT_CONTENT_EROLL}`, requestBody)\r\n }\r\n\r\n downloadCert(certId: any) {\r\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\n// import { map } from 'rxjs/operators'\n// tslint:disable\nimport _ from 'lodash'\nimport { BehaviorSubject } from 'rxjs'\n// tslint:enable\n\nconst API_END_POINTS = {\n readFeed: (id: string) => `/apis/proxies/v8/user/v1/feed/${id}`,\n getFormID: (id: string) => `/apis/proxies/v8/forms/getFormById?id=${id}`,\n submitForm: `/apis/proxies/v8/forms/v1/saveFormSubmit`,\n deleteFeed: `/apis/proxies/v8/user/feed/v1/delete`,\n}\n\n@Injectable()\nexport class NPSGridService {\n private telemetryEvents = new BehaviorSubject(false)\n updateTelemetryDataObservable = this.telemetryEvents.asObservable()\n\n constructor(private http: HttpClient) { }\n\n updateTelemetryData(state: boolean) {\n this.telemetryEvents.next(state)\n }\n\n getFeedStatus(id: any) {\n return this.http.get<any>(API_END_POINTS.readFeed(id))\n }\n\n getFormData(formid: any) {\n return this.http.get<any>(API_END_POINTS.getFormID(formid))\n }\n\n submitPlatformRating(req: any) {\n return this.http.post<any>(API_END_POINTS.submitForm, req)\n }\n\n deleteFeed(req: any) {\n return this.http.post<any>(API_END_POINTS.deleteFeed, req)\n }\n}\n","import { Inject, Injectable } from '@angular/core'\r\nimport { filter } from 'rxjs/operators'\r\n// import { AuthKeycloakService } from './auth-keycloak.service'\r\nimport { NsInstanceConfig } from './configurations.model'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { WsEvents } from './event.model'\r\nimport { EventService } from './event.service'\r\nimport { LoggerService } from './logger.service'\r\nimport { NsContent } from './widget-content.model'\r\nimport { Router, NavigationStart } from '@angular/router'\r\nimport { NPSGridService } from './nps-grid.service'\r\n\r\ndeclare var $t: any\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TelemetryService {\r\n previousUrl: string | null = null\r\n telemetryConfig: NsInstanceConfig.ITelemetryConfig | null = null\r\n pData: any = null\r\n contextCdata = []\r\n isAnonymousTelemetry = true\r\n telArray: any = []\r\n externalApps: any = {\r\n RBCP: 'rbcp-web-ui',\r\n }\r\n environment: any\r\n constructor(\r\n private configSvc: ConfigurationsService,\r\n private eventsSvc: EventService,\r\n @Inject('environment') environment: any,\r\n // private authSvc: AuthKeycloakService,\r\n private logger: LoggerService,\r\n private router: Router,\r\n private npsSvc: NPSGridService,\r\n ) {\r\n this.environment = environment\r\n const instanceConfig = this.configSvc.instanceConfig\r\n this.navigationStart()\r\n this.initializeConfig(instanceConfig)\r\n this.addPlayerListener()\r\n this.addCustomEventListener()\r\n this.addInteractListener()\r\n this.addFeedbackListener()\r\n this.addTimeSpentListener()\r\n this.addSearchListener()\r\n this.addHearbeatListener()\r\n this.addCustomImpressionListener()\r\n this.addCustomListener()\r\n this.addCustomListenerForGetStart()\r\n this.addCustomListenerForPlatformRating()\r\n }\r\n\r\n private navigationStart() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n if (event.url.includes('/public/') || event.url.includes('&preview=true') || event.url.includes('/certs')) {\r\n this.isAnonymousTelemetry = true\r\n this.updateTelemetryConfig()\r\n const instanceConfig = this.configSvc.instanceConfig\r\n this.initializeConfig(instanceConfig)\r\n }\r\n }\r\n })\r\n }\r\n\r\n get isAnonymousTelemetryRequired(): boolean {\r\n return this.isAnonymousTelemetry\r\n }\r\n\r\n private updateTelemetryConfig() {\r\n if (this.configSvc.instanceConfig && this.configSvc.instanceConfig.telemetryConfig) {\r\n if (this.isAnonymousTelemetryRequired) {\r\n this.configSvc.instanceConfig.telemetryConfig.endpoint = this.configSvc.instanceConfig.telemetryConfig.publicEndpoint\r\n } else {\r\n this.configSvc.instanceConfig.telemetryConfig.endpoint = this.configSvc.instanceConfig.telemetryConfig.protectedEndpoint\r\n }\r\n }\r\n }\r\n\r\n private initializeConfig(instanceConfig: NsInstanceConfig.IConfig | null) {\r\n if (instanceConfig) {\r\n this.telemetryConfig = instanceConfig.telemetryConfig\r\n this.telemetryConfig = {\r\n ...this.telemetryConfig,\r\n pdata: {\r\n ...this.telemetryConfig.pdata,\r\n // pid: navigator.userAgent,\r\n id: `${this.environment.name}.${this.telemetryConfig.pdata.id}`,\r\n },\r\n uid: (this.configSvc.userProfile && this.configSvc.userProfile.userId) ?\r\n this.configSvc.userProfile.userId : '',\r\n // authtoken: this.authSvc.token,\r\n // tslint:disable-next-line: no-non-null-assertion\r\n channel: this.rootOrgId || this.telemetryConfig.channel,\r\n sid: this.getTelemetrySessionId,\r\n }\r\n this.pData = this.telemetryConfig.pdata\r\n }\r\n }\r\n\r\n get getTelemetrySessionId(): string {\r\n return localStorage.getItem('telemetrySessionId') || ''\r\n }\r\n\r\n get rootOrgId(): string {\r\n if (this.configSvc && this.configSvc.userProfile && this.configSvc.userProfile.rootOrgId) {\r\n return this.configSvc.userProfile.rootOrgId\r\n }\r\n return ''\r\n }\r\n\r\n triggerNPSUpdate(data: any) {\r\n this.telArray.push(data)\r\n if (this.telArray && this.telArray.length === 4) {\r\n if (localStorage.getItem('ratingformID')) {\r\n this.telArray = []\r\n this.npsSvc.updateTelemetryData(true)\r\n }\r\n }\r\n }\r\n\r\n start(edata: any, data: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n try {\r\n if (this.telemetryConfig) {\r\n $t.start(\r\n this.telemetryConfig,\r\n (pageContext && pageContext.pageId) ?\r\n pageContext.pageId\r\n : '',\r\n '1.0',\r\n {\r\n // id,\r\n type: edata.type,\r\n mode: edata.mode,\r\n pageid: (pageContext && pageContext.pageId) ?\r\n pageContext.pageId\r\n : '',\r\n duration: 1,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(pageContext && pageContext.module ? { env: pageContext.module } : null),\r\n },\r\n object: {\r\n ...(data) && data,\r\n },\r\n }\r\n )\r\n } else {\r\n this.logger.error('Error Initializing Telemetry. Config missing.')\r\n }\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry start', e)\r\n }\r\n }\r\n\r\n end(edata: any, data: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n try {\r\n $t.end(\r\n {\r\n type: edata.type,\r\n mode: edata.mode,\r\n pageid: (pageContext && pageContext.pageId) ?\r\n pageContext.pageId\r\n : '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(pageContext && pageContext.module ? { env: pageContext.module } : null),\r\n },\r\n object: {\r\n ...(data) && data,\r\n },\r\n },\r\n )\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry end', e)\r\n }\r\n }\r\n\r\n audit(type: string, props: string, data: any) {\r\n try {\r\n $t.audit(\r\n {\r\n type,\r\n props,\r\n // data,\r\n state: data, // Optional. Current State\r\n prevstate: '', // Optional. Previous State\r\n duration: '', // Optional.\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n },\r\n )\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry audit', e)\r\n }\r\n }\r\n\r\n heartbeat(type: string, id: string) {\r\n try {\r\n $t.heartbeat({\r\n id,\r\n // mode,\r\n type,\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry heartbeat', e)\r\n }\r\n }\r\n\r\n impression(data?: any, objectType?: any) {\r\n this.triggerNPSUpdate(data)\r\n try {\r\n const page = this.getPageDetails()\r\n if (data && data.pageContext) {\r\n page.pageid = data.pageContext.pageId\r\n page.module = data.pageContext.module\r\n }\r\n const edata = {\r\n pageid: page.pageid, // Required. Unique page id\r\n type: page.pageUrlParts[0], // Required. Impression type (list, detail, view, edit, workflow, search)\r\n uri: page.pageUrl,\r\n }\r\n if (page.objectId) {\r\n const config = {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n env: page.module || (this.telemetryConfig && this.telemetryConfig.env),\r\n },\r\n object: {\r\n id: page.objectId,\r\n type: objectType,\r\n // This will override above id if the data has object in it.\r\n ...(data && data.object),\r\n },\r\n }\r\n if (!page.objectId || !objectType) {\r\n config.object = {}\r\n }\r\n $t.impression(edata, config)\r\n } else {\r\n $t.impression(edata, {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData && this.pData.id,\r\n },\r\n env: page.module || '',\r\n },\r\n object: {\r\n ...(data && data.object),\r\n },\r\n })\r\n }\r\n this.previousUrl = page.pageUrl\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry impression', e)\r\n }\r\n }\r\n\r\n externalImpression(impressionData: any) {\r\n // this.triggerNPSUpdate(impressionData)\r\n try {\r\n const page = this.getPageDetails()\r\n if (this.externalApps[impressionData.subApplicationName]) {\r\n const externalConfig = page.objectId ? {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[impressionData.subApplicationName],\r\n },\r\n },\r\n object: {\r\n id: page.objectId,\r\n },\r\n } : {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[impressionData.subApplicationName],\r\n },\r\n },\r\n }\r\n $t.impression(impressionData.data, externalConfig)\r\n }\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry externalImpression', e)\r\n }\r\n }\r\n\r\n // for Plartform rating\r\n addCustomListenerForPlatformRating() {\r\n this.eventsSvc.getPREvents$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.PlatformRating &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded\r\n ) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Interact\r\n ) {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.pageContext && event.pageContext.pageId || '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n addCustomListenerForGetStart() {\r\n this.eventsSvc.getStartEvents$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.GetStarted &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded\r\n ) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Interact\r\n ) {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.pageContext && event.pageContext.pageId || '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n addCustomListener() {\r\n this.eventsSvc.chatbotEvents$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Chatbot &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded\r\n ) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Interact\r\n ) {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.pageContext && event.pageContext.pageId || '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n addCustomImpressionListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryImpression) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Impression,\r\n ),\r\n )\r\n .subscribe(event => {\r\n try {\r\n // console.log('event.data::', event.data)\r\n this.impression(event.data)\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry impression', e)\r\n }\r\n })\r\n }\r\n\r\n addTimeSpentListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.type === WsEvents.WsTimeSpentType.Page &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Unloaded) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n })\r\n }\r\n\r\n addCustomEventListener() {\r\n\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Loaded &&\r\n event.data.type !== WsEvents.WsTimeSpentType.Player\r\n ) {\r\n this.start(\r\n {\r\n type: event.data.type,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded &&\r\n event.data.type !== WsEvents.WsTimeSpentType.Player\r\n ) {\r\n this.end(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n })\r\n }\r\n addPlayerListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.type === WsEvents.WsTimeSpentType.Player &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n const content: NsContent.IContent | null = event.data.content\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Loaded &&\r\n (!content ||\r\n (content.isIframeSupported || '').toLowerCase() === 'maybe' ||\r\n (content.isIframeSupported || '').toLowerCase() === 'yes' ||\r\n (content.mimeType === 'application/pdf' || 'application/json'))\r\n ) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded &&\r\n (!content ||\r\n (content.isIframeSupported || '').toLowerCase() === 'maybe' ||\r\n (content.isIframeSupported || '').toLowerCase() === 'yes' ||\r\n (content.mimeType === 'application/pdf' || 'application/json'))\r\n ) {\r\n this.end(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n })\r\n }\r\n\r\n addInteractListener() {\r\n const data = this.getPageDetails()\r\n this.triggerNPSUpdate(data.pageid)\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryInteract) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Interact,\r\n ),\r\n )\r\n .subscribe(event => {\r\n const page = this.getPageDetails()\r\n if (typeof event.from === 'string' && this.externalApps[event.from]) {\r\n const externalConfig = {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[event.from],\r\n },\r\n },\r\n }\r\n try {\r\n $t.interact(event.data, externalConfig)\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry interact', e)\r\n }\r\n } else {\r\n // let interactid\r\n // if (event.data.edata.type === 'goal') {\r\n // interactid = page.pageUrlParts[4]\r\n // }\r\n try {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n // object: event.data.object,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.data.pageContext && event.data.pageContext.pageId || page.pageid,\r\n // target: { page },\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry interact', e)\r\n }\r\n }\r\n })\r\n }\r\n\r\n addFeedbackListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryFeedback) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Feedback,\r\n ),\r\n )\r\n .subscribe(event => {\r\n const page = this.getPageDetails()\r\n try {\r\n $t.feedback(\r\n {\r\n rating: event.data.object.rating || 0,\r\n commentid: event.data.object.commentid || '',\r\n commenttxt: event.data.object.commenttxt || '',\r\n pageid: page.pageid,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n object: {\r\n id: event.data.object.contentId || event.data.object.id || '',\r\n type: event.data.edata.type || '',\r\n ver: `${(event.data.object.version || '1')}${''}`,\r\n rollup: {},\r\n },\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry interact', e)\r\n }\r\n })\r\n }\r\n\r\n addHearbeatListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryHeartBeat) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.HeartBeat,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (typeof event.from === 'string' && this.externalApps[event.from]) {\r\n const externalConfig = {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[event.from],\r\n },\r\n },\r\n }\r\n try {\r\n $t.heartbeat(event.data, externalConfig)\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry heartbeat', e)\r\n }\r\n } else {\r\n try {\r\n $t.heartbeat(\r\n {\r\n type: event.data.type,\r\n // subtype: event.data.eventSubType,\r\n id: event.data.id,\r\n // mimeType: event.data.mimeType,\r\n // mode: event.data.mode,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry heartbeat', e)\r\n }\r\n }\r\n })\r\n }\r\n\r\n addSearchListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetrySearch) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Search,\r\n ),\r\n )\r\n .subscribe(event => {\r\n try {\r\n $t.search(\r\n {\r\n query: event.data.query,\r\n filters: event.data.filters,\r\n size: event.data.size,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n },\r\n )\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry search', e)\r\n }\r\n })\r\n }\r\n\r\n getPageDetails() {\r\n const path = window.location.pathname.replace('/', '')\r\n const url = path + window.location.search\r\n let moduleValue = ''\r\n if (path.includes('discussion-forum')) {\r\n moduleValue = 'Discuss'\r\n }\r\n return {\r\n pageid: path,\r\n pageUrl: url,\r\n pageUrlParts: path.split('/'),\r\n refferUrl: this.previousUrl,\r\n objectId: this.extractContentIdFromUrlParts(path.split('/')),\r\n module: moduleValue,\r\n }\r\n }\r\n\r\n extractContentIdFromUrlParts(urlParts: string[]) {\r\n // TODO: pick toc and viewer url from some configuration\r\n const tocIdx = urlParts.indexOf('toc')\r\n const viewerIdx = urlParts.indexOf('viewer')\r\n\r\n if (tocIdx === -1 && viewerIdx === -1) {\r\n return null\r\n }\r\n\r\n if (tocIdx !== -1 && tocIdx < urlParts.length - 1) {\r\n return urlParts[tocIdx + 1] // e.g. url /app/toc/<content_id>\r\n }\r\n\r\n if (viewerIdx !== -1 && viewerIdx < urlParts.length - 2) {\r\n return urlParts[viewerIdx + 2] // e.g. url /app/viewer/<content_type>/<content_id>\r\n }\r\n\r\n return null\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { ActivatedRoute, Router } from '@angular/router'\r\nimport { WidgetContentService } from './widget-content.service'\r\n// import { AuthKeycloakService } from './auth-keycloak.service'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { WsEvents } from './event.model'\r\nimport { EventService } from './event.service'\r\nimport { TelemetryService } from './telemetry.service'\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SubapplicationRespondService {\r\n subAppname = ''\r\n continueLearningData: any = null\r\n contentWindowinfo: any\r\n loaded = false\r\n constructor(\r\n private configSvc: ConfigurationsService,\r\n private contentSvc: WidgetContentService,\r\n // private keyCloakSvc: AuthKeycloakService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private eventSvc: EventService,\r\n private teleSvc: TelemetryService,\r\n ) {\r\n this.changeContextrespond()\r\n this.configSvc.prefChangeNotifier.subscribe(() => {\r\n this.changeContextrespond()\r\n })\r\n }\r\n loadedRespond(contentWindow: any, applicationName: string, id?: string) {\r\n if (id && this.activatedRoute.snapshot.queryParams.viewMode && this.activatedRoute.snapshot.queryParams.viewMode === 'RESUME') {\r\n this.continueLearningData = null\r\n this.contentSvc.fetchContentHistory(id).subscribe(\r\n data => {\r\n this.continueLearningData = data.continueData\r\n if (this.configSvc && this.configSvc.userProfile) {\r\n const firstName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[0] : ''\r\n const lastName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[1] : ''\r\n const viewMode: string = this.activatedRoute.snapshot.queryParams.viewMode ?\r\n this.activatedRoute.snapshot.queryParams.viewMode : ''\r\n // const token = this.keyCloakSvc.token\r\n const response = {\r\n subApplicationName: applicationName,\r\n requestId: 'LOADED',\r\n parentContext: {\r\n domainName: window.location.host,\r\n url: this.router.url,\r\n rootOrg: this.configSvc.rootOrg,\r\n theme: this.configSvc.activeThemeObject ? {\r\n name: this.configSvc.activeThemeObject.themeName,\r\n ...this.configSvc.activeThemeObject.color,\r\n } : '',\r\n fontSize: this.configSvc.activeFontObject ? this.configSvc.activeFontObject.baseFontSize : '14px',\r\n locale: (this.configSvc.userPreference && this.configSvc.userPreference.selectedLocale) || 'en',\r\n darkMode: this.configSvc.isDarkMode,\r\n subApplicationStartMode: viewMode.toUpperCase(),\r\n user: {\r\n firstName,\r\n lastName,\r\n // token,\r\n userId: this.configSvc.userProfile.userId ? this.configSvc.userProfile.userId : '',\r\n roles: this.configSvc.userRoles ? Array.from(this.configSvc.userRoles) : [],\r\n },\r\n heartbeatFrequency: '200',\r\n },\r\n data: this.continueLearningData.data ? {\r\n continueLearning: this.continueLearningData.data,\r\n } : null,\r\n }\r\n contentWindow.postMessage(response, '*')\r\n this.contentWindowinfo = contentWindow\r\n this.loaded = true\r\n this.subAppname = applicationName\r\n }\r\n })\r\n } else {\r\n if (this.configSvc && this.configSvc.userProfile) {\r\n const firstName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[0] : ''\r\n const lastName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[1] : ''\r\n const viewMode: string = this.activatedRoute.snapshot.queryParams.viewMode ?\r\n this.activatedRoute.snapshot.queryParams.viewMode : ''\r\n // const token = this.keyCloakSvc.token\r\n const response = {\r\n subApplicationName: applicationName,\r\n requestId: 'LOADED',\r\n parentContext: {\r\n domainName: window.location.host,\r\n url: this.router.url,\r\n rootOrg: this.configSvc.rootOrg,\r\n theme: this.configSvc.activeThemeObject ? {\r\n name: this.configSvc.activeThemeObject.themeName,\r\n ...this.configSvc.activeThemeObject.color,\r\n } : '',\r\n fontSize: this.configSvc.activeFontObject ? this.configSvc.activeFontObject.baseFontSize : '14px',\r\n locale: (this.configSvc.userPreference && this.configSvc.userPreference.selectedLocale) || 'en',\r\n darkMode: this.configSvc.isDarkMode,\r\n subApplicationStartMode: viewMode.toUpperCase(),\r\n user: {\r\n firstName,\r\n lastName,\r\n // token,\r\n userId: this.configSvc.userProfile.userId ? this.configSvc.userProfile.userId : '',\r\n roles: this.configSvc.userRoles ? Array.from(this.configSvc.userRoles) : [],\r\n },\r\n heartbeatFrequency: '200',\r\n },\r\n data: null,\r\n }\r\n contentWindow.postMessage(response, '*')\r\n this.contentWindowinfo = contentWindow\r\n this.loaded = true\r\n this.subAppname = applicationName\r\n }\r\n }\r\n }\r\n continueLearningRespond(id: string, continueLearning: any) {\r\n this.contentSvc.saveContinueLearning(\r\n {\r\n contextPathId: id,\r\n resourceId: id,\r\n data: JSON.stringify({ timestamp: Date.now(), data: continueLearning }),\r\n dateAccessed: Date.now(),\r\n },\r\n )\r\n .toPromise()\r\n .catch()\r\n }\r\n telemetryEvents(tData: any) {\r\n if (tData) {\r\n switch (tData.eventId) {\r\n case 'INTERACT':\r\n this.eventSvc.dispatchEvent<WsEvents.IWsEventTelemetryInteract>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Warn,\r\n data: {\r\n ...tData.data,\r\n eventSubType: WsEvents.EnumTelemetrySubType.Interact,\r\n },\r\n from: tData.subApplicationName,\r\n to: 'Telemetry',\r\n })\r\n break\r\n case 'HEARTBEAT':\r\n this.eventSvc.dispatchEvent<WsEvents.IWsEventTelemetryHeartBeat>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Trace,\r\n data: {\r\n ...tData.data,\r\n eventSubType: WsEvents.EnumTelemetrySubType.HeartBeat,\r\n },\r\n from: tData.subApplicationName,\r\n to: 'Telemetry',\r\n })\r\n break\r\n case 'IMPRESSION':\r\n this.teleSvc.externalImpression(tData.data)\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n }\r\n unsubscribeResponse() {\r\n this.subAppname = ''\r\n this.continueLearningData = null\r\n this.contentWindowinfo = null\r\n this.loaded = false\r\n }\r\n changeContextrespond() {\r\n if (this.loaded && this.contentWindowinfo && this.configSvc && this.configSvc.userProfile && this.subAppname) {\r\n const firstName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[0] : ''\r\n const lastName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[1] : ''\r\n const viewMode: string = this.activatedRoute.snapshot.queryParams.viewMode ?\r\n this.activatedRoute.snapshot.queryParams.viewMode : ''\r\n // const token = this.keyCloakSvc.token\r\n const response = {\r\n subApplicationName: this.subAppname,\r\n requestId: 'CONTEXT_CHANGE',\r\n parentContext: {\r\n domainName: window.location.host,\r\n url: this.router.url,\r\n rootOrg: this.configSvc.rootOrg,\r\n theme: this.configSvc.activeThemeObject ? {\r\n name: this.configSvc.activeThemeObject.themeName,\r\n ...this.configSvc.activeThemeObject.color,\r\n } : '',\r\n fontSize: this.configSvc.activeFontObject ? this.configSvc.activeFontObject.baseFontSize : '14px',\r\n locale: (this.configSvc.userPreference && this.configSvc.userPreference.selectedLocale) || 'en',\r\n darkMode: this.configSvc.isDarkMode,\r\n subApplicationStartMode: viewMode.toUpperCase(),\r\n user: {\r\n firstName,\r\n lastName,\r\n // token,\r\n userId: this.configSvc.userProfile.userId ? this.configSvc.userProfile.userId : '',\r\n roles: this.configSvc.userRoles ? Array.from(this.configSvc.userRoles) : [],\r\n },\r\n heartbeatFrequency: '200',\r\n },\r\n }\r\n this.contentWindowinfo.postMessage(response, '*')\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { IUserPreference } from './user-preference.model'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { debounceTime, retry, catchError } from 'rxjs/operators'\r\nimport { of } from 'rxjs'\r\nconst endpoints = {\r\n userPref: '/apis/protected/v8/user/preference',\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserPreferenceService {\r\n // do changes in the backend and update the store\r\n\r\n constructor(private http: HttpClient, private configurationSvc: ConfigurationsService) { }\r\n\r\n initialize() {\r\n this.configurationSvc.prefChangeNotifier\r\n .pipe(debounceTime(250))\r\n .subscribe((changedUserPref?: Partial<IUserPreference>) => {\r\n if (this.configurationSvc.isAuthenticated) {\r\n this.saveUserPreference(changedUserPref)\r\n }\r\n })\r\n }\r\n\r\n async fetchUserPreference(): Promise<IUserPreference> {\r\n const pref = await this.http.get<IUserPreference>(endpoints.userPref).toPromise()\r\n return pref\r\n }\r\n\r\n async saveUserPreference(changedUserPref?: Partial<IUserPreference>): Promise<boolean> {\r\n try {\r\n if (!changedUserPref) {\r\n return false\r\n }\r\n const newUserPref: IUserPreference = {\r\n ...this.configurationSvc.userPreference,\r\n pinnedApps:\r\n (changedUserPref && changedUserPref.pinnedApps) ||\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.pinnedApps) ||\r\n '',\r\n isDarkMode: this.configurationSvc.isDarkMode,\r\n isRTL: this.configurationSvc.isRTL,\r\n selectedTheme:\r\n (this.configurationSvc.activeThemeObject &&\r\n this.configurationSvc.activeThemeObject.themeClass) ||\r\n '',\r\n selectedFont:\r\n (this.configurationSvc.activeFontObject &&\r\n this.configurationSvc.activeFontObject.fontClass) ||\r\n '',\r\n selectedLangGroup:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.selectedLangGroup) ||\r\n '',\r\n selectedLocale:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.selectedLocale) ||\r\n '',\r\n colorPallet:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.colorPallet) ||\r\n [],\r\n defaultCardType:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.defaultCardType) ||\r\n '',\r\n completedActivity:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.completedActivity) ||\r\n [],\r\n ...(changedUserPref || {}),\r\n completedTour: this.configurationSvc.completedTour,\r\n profileSettings:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.profileSettings) ||\r\n this.configurationSvc.profileSettings,\r\n }\r\n const oldUserPref: IUserPreference | null = this.configurationSvc.userPreference\r\n this.configurationSvc.userPreference = newUserPref\r\n await this.http\r\n .put(endpoints.userPref, newUserPref)\r\n .pipe(\r\n retry(3),\r\n catchError(err => {\r\n this.configurationSvc.userPreference = oldUserPref\r\n return of(err)\r\n }),\r\n )\r\n .toPromise()\r\n return true\r\n } catch (err) {\r\n return false\r\n }\r\n }\r\n}\r\n","import { Type } from '@angular/core'\r\nimport { SafeStyle } from '@angular/platform-browser'\r\ntype TUrl = undefined | 'none' | 'back' | string\r\nexport namespace NsWidgetResolver {\r\n export type UnitPermissionPrimitive = undefined | null | string\r\n export interface IUnitPermissionObject {\r\n all: UnitPermissionPrimitive | string[]\r\n none: UnitPermissionPrimitive | string[]\r\n some: UnitPermissionPrimitive | string[]\r\n }\r\n export type UnitPermission =\r\n | UnitPermissionPrimitive\r\n | string[]\r\n | IUnitPermissionObject\r\n | Pick<IUnitPermissionObject, 'all'>\r\n | Pick<IUnitPermissionObject, 'none'>\r\n | Pick<IUnitPermissionObject, 'some'>\r\n | Exclude<IUnitPermissionObject, 'all'>\r\n | Exclude<IUnitPermissionObject, 'none'>\r\n | Exclude<IUnitPermissionObject, 'some'>\r\n export interface IPermissions {\r\n enabled: boolean\r\n available: boolean\r\n roles?: UnitPermission\r\n features?: UnitPermission\r\n groups?: UnitPermission\r\n }\r\n\r\n export interface IBaseConfig {\r\n widgetType: string\r\n widgetSubType: string\r\n }\r\n\r\n export interface IRegistrationConfig extends IBaseConfig {\r\n component: Type<IWidgetData<any>>\r\n }\r\n\r\n export interface IRegistrationsPermissionConfig extends IBaseConfig {\r\n widgetPermission?: IPermissions\r\n }\r\n\r\n export interface IRenderConfigWithTypedData<T> extends IRegistrationsPermissionConfig {\r\n widgetData: T\r\n widgetInstanceId?: string\r\n widgetHostClass?: string\r\n widgetHostStyle?: { [key: string]: string }\r\n }\r\n export type IRenderConfigWithAnyData = IRenderConfigWithTypedData<any>\r\n export interface IWidgetData<T>\r\n extends Omit<IRenderConfigWithTypedData<T>, 'widgetPermission' | 'widgetHostStyle'> {\r\n widgetSafeStyle?: SafeStyle\r\n updateBaseComponent: (\r\n widgetType: string,\r\n widgetSubType: string,\r\n widgetInstanceId?: string,\r\n widgetHostClass?: string,\r\n widgetSafeStyle?: SafeStyle,\r\n ) => void\r\n }\r\n export interface ITitle {\r\n title: string,\r\n url: TUrl,\r\n icon?: string\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\nimport { Injectable } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { ConfigurationsService } from './configurations.service'\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class MultilingualTranslationsService {\n selectedLang = ''\n // website lang change\n languageSelected = new BehaviorSubject(true)\n languageSelectedObservable = this.languageSelected.asObservable()\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch'\n\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\n // this.getLanguage()\n }\n\n getLanguage() {\n if (this.configSvc.unMappedUser) {\n if (this.configSvc.unMappedUser.profileDetails &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang\n this.translate.use(lang)\n localStorage.setItem('websiteLanguage', lang)\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'))\n lang = lang.replace(/\\\"/g, '')\n this.translate.use(lang)\n } else {\n this.translate.setDefaultLang('en')\n localStorage.setItem('websiteLanguage', 'en')\n }\n }\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'))\n lang = lang.replace(/\\\"/g, '')\n this.translate.use(lang)\n }\n }\n }\n\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\n let nlabel = label\n nlabel = nlabel && nlabel.replace(/\\s/g, '')\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype\n return this.translate.instant(translationKey)\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel\n return this.translate.instant(translationKeyn)\n }\n\n translateLabel(label: string, type: any, subtype: any) {\n let nlabel = label\n nlabel = nlabel.toLowerCase()\n const sl = nlabel.split(' ')\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1)\n }\n })\n nlabel = sl.join('')\n nlabel = nlabel.replace(/\\s/g, '')\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype\n return this.translate.instant(translationKey)\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel\n return this.translate.instant(translationKeyn)\n }\n\n translateActualLabel(label: string, type: any, subtype: any) {\n let nlabel = label\n const sl = nlabel.split(' ')\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1)\n }\n })\n nlabel = sl.join('')\n nlabel = nlabel.replace(/\\s/g, '')\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype\n return this.translate.instant(translationKey)\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel\n return this.translate.instant(translationKeyn)\n }\n\n editProfileDetailsAPI(data: any) {\n return this.http.post<any>(this.editProfileDetails, data)\n }\n\n updatelanguageSelected(state: any, lang: any, userid: any) {\n this.languageSelected.next(state)\n this.translate.use(lang)\n this.selectedLang = lang\n\n if (userid) {\n const reqUpdates = {\n request: {\n userId: userid,\n profileDetails: {\n additionalProperties: {\n webPortalLang: this.selectedLang,\n },\n },\n },\n }\n this.editProfileDetailsAPI(reqUpdates).subscribe()\n }\n }\n}\n","export enum EFeatures {\r\n // Playlists\r\n PLAYLIST = 'playlist',\r\n PLAYLIST_CREATE = 'playlistCreate',\r\n PLAYLIST_ADD_NEW_CONTENT = 'playlistAddNewContent',\r\n PLAYLIST_REMOVE_EXISTING_CONTENT = 'playlistRemoveExistingContent',\r\n PLAYLIST_DELETE = 'playlistDelete',\r\n PLAYLIST_SHARE = 'playlistShare',\r\n\r\n // Goals\r\n GOAL = 'goal',\r\n GOAL_CREATE_OWN = 'goalCreateOwn',\r\n GOAL_CREATE_SUGGESTED = 'goalCreateSuggested',\r\n GOAL_EDIT_EXISTING_GOAL = 'goalEditExistingGoal',\r\n GOAL_DELETE_EXISTING_GOAL = 'goalDeleteExistingGoal',\r\n GOAL_SHARE_GOAL_WITH_OTHERS = 'goalShareGoalWithOthers',\r\n GOAL_VIEW_ALL_GOALS_SECTION = 'goalViewAllGoalsSection',\r\n GOAL_VIEW_IN_PROGRESS_GOALS_SECTION = 'goalViewInProgressGoalsSection',\r\n GOAL_VIEW_COMPLETED_GOALS_SECTION = 'goalViewCompletedGoalsSection',\r\n\r\n // Navigator\r\n NAVIGATOR = 'navigator',\r\n NAVIGATOR_VIEW_NAVIGATOR_CAROUSEL = 'navigatorViewNavigatorCarousel',\r\n NAVIGATOR_VIEW_ROLES_PAGE = 'navigatorViewRolesPage',\r\n NAVIGATOR_SELECT_ANY_PILLAR = 'navigatorSelectAnyPillar',\r\n NAVIGATOR_PURSUE_ANY_OFFERING = 'navigatorPursueAnyOffering',\r\n NAVIGATOR_CREATE_GOAL_FROM_OFFERING = 'navigatorCreateGoalFromOffering',\r\n NAVIGATOR_VIEW_EXPLORE_PAGE = 'navigatorViewExplorePage',\r\n NAVIGATOR_SELECT_ANY_LEARNING_PATH = 'navigatorSelectAnyLearningPath',\r\n NAVIGATOR_CREATE_GOAL_FROM_LEARNING_PATH = 'navigatorCreateGoalFromLearningPath',\r\n NAVIGATOR_VIEW_SUGGESTIONS_PAGE = 'navigatorViewSuggestionsPage',\r\n NAVIGATOR_SELECT_SUGGESTED_TOPICS = 'navigatorSelectSuggestedTopics',\r\n NAVIGATOR_GET_SUGGESTIONS_OF_SELECTED_TOPICS = 'navigatorGetSuggestionsOfSelectedTopics',\r\n NAVIGATOR_CREATE_GOAL_FROM_SELECTED_LEARNING_PATHS = 'navigatorCreateGoalFromSelectedLearningPaths',\r\n NAVIGATOR_VIEW_INDUSTRIES_PAGE = 'navigatorViewIndustriesPage',\r\n NAVIGATOR_VIEW_CME_PAGE = 'navigatorViewCmePage',\r\n NAVIGATOR_SELECT_SUBDOMAIN = 'navigatorSelectSubdomain',\r\n NAVIGATOR_SELECT_PILLAR = 'navigatorSelectPillar',\r\n NAVIGATOR_SELECT_THEME = 'navigatorSelectTheme',\r\n NAVIGATOR_VIEW_CPG_PAGE = 'navigatorViewCpgPage',\r\n NAVIGATOR_VIEW_ENERGY_PAGE = 'navigatorViewEnergyPage',\r\n NAVIGATOR_VIEW_FINANCIAL_SERVICES_PAGE = 'navigatorViewFinancialServicesPage',\r\n NAVIGATOR_VIEW_HEALTH_CARE_PAGE = 'navigatorViewHealthCarePage',\r\n NAVIGATOR_VIEW_INSURANCE_PAGE = 'navigatorViewInsurancePage',\r\n NAVIGATOR_VIEW_LIFE_SCIENCES_PAGE = 'navigatorViewLifeSciencesPage',\r\n NAVIGATOR_VIEW_MFG_PAGE = 'navigatorViewMfgPage',\r\n NAVIGATOR_VIEW_RETAIL_PAGE = 'navigatorViewRetailPage',\r\n NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_PAGE = 'navigatorViewTravelAndHospitalityPage',\r\n NAVIGATOR_VIEW_UTILITIES_PAGE = 'navigatorViewUtilitiesPage',\r\n NAVIGATOR_VIEW_CME_ANALYTICS = 'navigatorViewCmeAnalytics',\r\n NAVIGATOR_VIEW_GPG_ANALYTICS = 'navigatorViewGpgAnalytics',\r\n NAVIGATOR_VIEW_ENERGY_ANALYTICS = 'navigatorViewEnergyAnalytics',\r\n NAVIGATOR_VIEW_FINANCIAL_SERVICES_ANALYTICS = 'navigatorViewFinancialServicesAnalytics',\r\n NAVIGATOR_VIEW_HEALTH_CARE_ANALYTICS = 'navigatorViewHealthCareAnalytics',\r\n NAVIGATOR_VIEW_INSURANCE_ANALYTICS = 'navigatorViewInsuranceAnalytics',\r\n NAVIGATOR_VIEW_LIFE_SCIENCES_ANALYTICS = 'navigatorViewLifeSciencesAnalytics',\r\n NAVIGATOR_VIEW_MFG_ANALYTICS = 'navigatorViewMfgAnalytics',\r\n NAVIGATOR_VIEW_RETAIL_ANALYTICS = 'navigatorViewRetailAnalytics',\r\n NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_ANALYTICS = 'navigatorViewTravelAndHospitalityAnalytics',\r\n NAVIGATOR_VIEW_UTILITIES_ANALYTICS = 'navigatorViewUtilitiesAnalytics',\r\n NAVIGATOR_VIEW_PILLARS_PAGE = 'navigatorViewPillarsPage',\r\n NAVIGATOR_VIEW_DIFFERENT_COURSES_IN_PILLAR = 'navigatorViewDifferentCoursesInPillar',\r\n NAVIGATOR_VIEW_FULL_STACK_PAGE = 'navigatorViewFullStackPage',\r\n NAVIGATOR_VIEW_DIFFERENT_FULL_STACK_PROGRAMS = 'navigatorViewDifferentFullStackPrograms',\r\n\r\n // Catalog\r\n CATALOG = 'catalog',\r\n CATALOG_VIEW_CATALOG_LIST = 'catalogViewCatalogList',\r\n CATALOG_SELECT_ITEM_FROM_CATALOG_LIST = 'catalogSelectItemFromCatalogList',\r\n CATALOG_VIEW_PROGRAMS_STRIP = 'catalogViewProgramsStrip',\r\n CATALOG_VIEW_COURSES_STRIP = 'catalogViewCoursesStrip',\r\n CATALOG_VIEW_LEARNING_MODULES_STRIP = 'catalogViewLearningModulesStrip',\r\n CATALOG_VIEW_RESOURCES_STRIP = 'catalogViewResourcesStrip',\r\n\r\n // Marketing Page\r\n MARKETING_PAGE = 'marketingPage',\r\n MARKETING_PAGE_VIEW_BRAND_ASSETS_PAGE = 'marketingPageViewBrandAssetsPage',\r\n MARKETING_PAGE_VIEW_CORPORATE_STRIP = 'marketingPageViewCorporateStrip',\r\n MARKETING_PAGE_VIEW_EMPLOYEE_STRIP = 'marketingPageViewEmployeeStrip',\r\n MARKETING_PAGE_VIEW_EXPERIMENTAL_SHOWCASE_PAGE = 'marketingPageViewExperimentalShowcasePage',\r\n MARKETING_PAGE_VIEW_HUBS_PAGE = 'marketingPageViewHubsPage',\r\n MARKETING_PAGE_VIEW_CONNECTICUT_STRIP = 'marketingPageViewConnecticutStrip',\r\n MARKETING_PAGE_VIEW_INDIANA_STRIP = 'marketingPageViewIndianaStrip',\r\n MARKETING_PAGE_VIEW_RHODE_ISLAND_STRIP = 'marketingPageViewRhodeIslandStrip',\r\n MARKETING_PAGE_VIEW_CLIENT_STORIES_PAGE = 'marketingPageViewClientStoriesPage',\r\n MARKETING_PAGE_VIEW_AGILE_SCALE_AT_DIGITAL_STRIP = 'marketingPageViewAgileScaleAtDigitalStrip',\r\n MARKETING_PAGE_VIEW_AI_POWERED_CORE_STRIP = 'marketingPageViewAiPoweredCoreStrip',\r\n MARKETING_PAGE_VIEW_ALWAYS_ON_LEAVING_STRIP = 'marketingPageViewAlwaysOnLeavingStrip',\r\n MARKETING_PAGE_VIEW_SERVICES_PAGE = 'marketingPageViewServicesPage',\r\n MARKETING_PAGE_VIEW_SERVICES_PENTAGON = 'marketingPageViewServicesPentagon',\r\n MARKETING_PAGE_VIEW_OFFERINGS_LIST = 'marketingPageViewOfferingsList',\r\n MARKETING_PAGE_SELECT_ANY_OFFERING = 'marketingPageSelectAnyOffering',\r\n MARKETING_PAGE_SELECT_ANY_PILLAR_FROM_PENTAGON = 'marketingPageSelectAnyPillarFromPentagon',\r\n MARKETING_PAGE_VIEW_INDUSTRIES_PAGE = 'marketingPageViewIndustriesPage',\r\n MARKETING_PAGE_VIEW_INDUSTRIES_LIST = 'marketingPageViewIndustriesList',\r\n MARKETING_PAGE_SELECT_ANY_INDUSTRY = 'marketingPageSelectAnyIndustry',\r\n MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_PAGE = 'marketingPageViewProductAndSubsidiariesPage',\r\n MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_LIST = 'marketingPageViewProductAndSubsidiariesList',\r\n MARKETING_PAGE_SELECT_ANY_PRODUCT_AND_SUBSIDIARY = 'marketingPageSelectAnyProductAndSubsidiary',\r\n\r\n // Interests\r\n INTERESTS = 'interests',\r\n INTERESTS_ADD_INTERESTS_FROM_SEARCH = 'interestsAddInterestsFromSearch',\r\n INTERESTS_ADD_INTERESTS_FROM_OUR_SUGGESTIONS_SECTION = 'interestsAddInterestsFromOurSuggestionsSection',\r\n INTERESTS_REMOVE_INTERESTS_FROM_MY_INTERESTS_SECTION = 'interestsRemoveInterestsFromMyInterestsSection',\r\n INTERESTS_VIEW_INTERESTS_SEARCH_FIELD = 'interestsViewInterestsSearchField',\r\n INTERESTS_VIEW_MY_INTERESTS_SECTION = 'interestsViewMyInterestsSection',\r\n INTERESTS_VIEW_OWN_SUGGESTIONS_SECTION = 'interestsViewOwnSuggestionsSection',\r\n INTERESTS_VIEW_MORE_SUGGESTIONS_BUTTON = 'interestsViewMoreSuggestionsButton',\r\n\r\n // Feedback\r\n FEEDBACK = 'feedback',\r\n FEEDBACK_VIEW_PLATFORM_FEEDBACK_SECTION = 'feedbackViewPlatformFeedbackSection',\r\n FEEDBACK_STAR_RATING_FOR_PLATFORM = 'feedbackStarRatingForPlatform',\r\n FEEDBACK_WRITE_PLATFORM_FEEDBACK = 'feedbackWritePlatformFeedback',\r\n FEEDBACK_RESET_PLATFORM_FEEDBACK = 'feedbackResetPlatformFeedback',\r\n FEEDBACK_SUBMIT_PLATFORM_FEEDBACK = 'feedbackSubmitPlatformFeedback',\r\n FEEDBACK_VIEW_CONTENT_FEEDBACK_SECTION = 'feedbackViewContentFeedbackSection',\r\n FEEDBACK_STAR_RATING_FOR_CONTENT = 'feedbackStarRatingForContent',\r\n FEEDBACK_WRITE_CONTENT_FEEDBACK = 'feedbackWriteContentFeedback',\r\n FEEDBACK_RESET_CONTENT_FEEDBACK = 'feedbackResetContentFeedback',\r\n FEEDBACK_SUBMIT_CONTENT_FEEDBACK = 'feedbackSubmitContentFeedback',\r\n FEEDBACK_VIEW_ISSUE_REPORTING_SECTION = 'feedbackViewIssueReportingSection',\r\n FEEDBACK_WRITING_ISSUE = 'feedbackWritingIssue',\r\n FEEDBACK_RESET_ISSUE = 'feedbackResetIssue',\r\n FEEDBACK_SUBMIT_ISSUE = 'feedbackSubmitIssue',\r\n\r\n // Contact Us\r\n CONTACT_US = 'contactUs',\r\n CONTACT_US_VIEW_RAISE_AHD_SECTION = 'contactUsViewRaiseAhdSection',\r\n CONTACT_US_VIEW_MAIL_US_SECTION = 'contactUsViewMailUsSection',\r\n CONTACT_US_VIEW_TALK_TO_US_SECTION = 'contactUsViewTalkToUsSection',\r\n CONTACT_US_RAISE_AHD = 'contactUsRaiseAhd',\r\n CONTACT_US_WRITE_EMAIL = 'contactUsWriteEmail',\r\n CONTACT_US_DIAL_FROM_PHONE = 'contactUsDialFromPhone',\r\n\r\n // FAQs\r\n FAQ = 'faq',\r\n FAQ_VIEW_LOGIN_FAQS = 'faqViewLoginFaqs',\r\n FAQ_VIEW_ODC_ACCESS_FAQS = 'faqViewOdcAccessFaqs',\r\n FAQ_VIEW_COMPATIBILITY_FAQS = 'faqViewCompatibilityFaqs',\r\n FAQ_VIEW_INSTALLATION_FAQS = 'faqViewInstallationFaqs',\r\n FAQ_VIEW_PROGRESS_COMPLETION_FAQS = 'faqViewProgressCompletionFaqs',\r\n FAQ_VIEW_VIDEO_FAQS = 'faqViewVideoFaqs',\r\n FAQ_VIEW_AUTHORING_FAQS = 'faqViewAuthoringFaqs',\r\n\r\n // Mobile Apps\r\n MOBILE_APPS = 'mobileApps',\r\n MOBILE_APPS_VIEW_ANDROID_APP_SECTION = 'mobileAppsViewAndroidAppSection',\r\n MOBILE_APPS_DOWNLOAD_APP_FROM_PLAY_STORE = 'mobileAppsDownloadAppFromPlayStore',\r\n MOBILE_APPS_DOWNLOAD_APP_FROM_OUR_SERVER = 'mobileAppsDownloadAppFromOurServer',\r\n MOBILE_APPS_VIEW_QR_CODE_FOR_ANDROID_APP = 'mobileAppsViewQrCodeForAndroidApp',\r\n MOBILE_APPS_VIEW_IOS_APP_SECTION = 'mobileAppsViewIosAppSection',\r\n MOBILE_APPS_DOWNLOAD_IOS_APP = 'mobileAppsDownloadIosApp',\r\n MOBILE_APPS_VIEW_QR_CODE_FOR_IOS_APP = 'mobileAppsViewQrCodeForIosApp',\r\n\r\n // About Us\r\n ABOUT_US = 'aboutUs',\r\n ABOUT_US_VIEW_ABOUT_US_PAGE_SECTIONS = 'aboutUsViewAboutUsPageSections',\r\n\r\n // Settings\r\n SETTINGS = 'settings',\r\n SETTINGS_VIEW_LANGUAGE_SECTION = 'settingsViewLanguageSection',\r\n SETTINGS_VIEW_FONT_SIZE_SECTION = 'settingsViewFontSizeSection',\r\n SETTINGS_VIEW_THEME_SECTION = 'settingsViewThemeSection',\r\n SETTINGS_CHANGE_LANGUAGE = 'settingsChangeLanguage',\r\n SETTINGS_CHANGE_FONT_SIZE = 'settingsChangeFontSize',\r\n SETTINGS_CHANGE_THEME = 'settingsChangeTheme',\r\n\r\n // Login Page\r\n LOGIN_PAGE = 'loginPage',\r\n LOGIN_PAGE_LOGIN_FOR_INFOSCIONS = 'loginPageLoginForInfoscions',\r\n LOGIN_PAGE_LOGIN_FOR_SUBSIDIARIES = 'loginPageLoginForSubsidiaries',\r\n LOGIN_PAGE_LOGIN_FOR_NEW_RECRUITS = 'loginPageLoginForNewRecruits',\r\n LOGIN_PAGE_ABOUT_US = 'loginPageAboutUs',\r\n LOGIN_PAGE_TERMS_OF_USE = 'loginPageTermsOfUse',\r\n LOGIN_PAGE_FAQS = 'loginPageFaqs',\r\n LOGIN_PAGE_CONTACT_US = 'loginPageContactUs',\r\n\r\n // TOC Page\r\n TOC_PAGE = 'tocPage',\r\n TOC_PAGE_VIEW_OVERVIEW_SECTION = 'tocPageViewOverviewSection',\r\n TOC_PAGE_VIEW_INSTRUCTOR_LED_SECTION = 'tocPageViewInstructorLedSection',\r\n TOC_PAGE_VIEW_COHORTS_SECTION = 'tocPageViewCohortsSection',\r\n TOC_PAGE_VIEW_DISCUSSION_FORUM_SECTION = 'tocPageViewDiscussionForumSection',\r\n TOC_PAGE_VIEW_COURSE_ANALYTICS_SECTION = 'tocPageViewCourseAnalyticsSection',\r\n TOC_PAGE_VIEW_WHATS_NEXT_SECTION = 'tocPageViewWhatsNextSection',\r\n TOC_PAGE_VIEW_PART_OF_SECTION = 'tocPageViewPartOfSection',\r\n TOC_PAGE_REGISTER_FOR_UPCOMING_TRAINING = 'tocPageRegisterForUpcomingTraining',\r\n TOC_PAGE_UNREGISTER_FROM_REGISTERED_TRAINING = 'tocPageUnregisterFromRegisteredTraining',\r\n TOC_PAGE_SHARE_INSTRUCTOR_LED_TRAININGS = 'tocPageShareInstructorLedTrainings',\r\n TOC_PAGE_VIEW_EDUCATORS_OF_TRAININGS = 'tocPageViewEducatorsOfTrainings',\r\n TOC_PAGE_NOMINATE_OTHERS_FOR_TRAININGS = 'tocPageNominateOthersForTrainings', // Applicable only for JL6 and above.\r\n TOC_PAGE_REQUEST_TRAINING = 'tocPageRequestTraining', // Applicable only for JL6 and above.\r\n TOC_PAGE_VIEW_ACTIVE_LEARNERS_SECTION = 'tocPageViewActiveLearnersSection',\r\n TOC_PAGE_VIEW_ALL_ACTIVE_LEARNERS = 'tocPageViewAllActiveLearners',\r\n TOC_PAGE_VIEW_CURRENTLY_ACTIVE_LEARNERS = 'tocPageViewCurrentlyActiveLearners',\r\n TOC_PAGE_VIEW_LEARNERS_SHARING_THE_SAME_GOALS = 'tocPageViewLearnersSharingTheSameGoals',\r\n TOC_PAGE_VIEW_EXPERTS_AND_TUTORS_SECTION = 'tocPageViewExpertsAndTutorsSection',\r\n TOC_PAGE_VIEW_ALL_EXPERTS_AND_TUTORS = 'tocPageViewAllExpertsAndTutors',\r\n TOC_PAGE_VIEW_AUTHORS_OF_COURSE = 'tocPageViewAuthorsOfCourse',\r\n TOC_PAGE_VIEW_EDUCATORS_OF_COURSE = 'tocPageViewEducatorsOfCourse',\r\n TOC_PAGE_VIEW_TOPPERS_OF_COURSE = 'tocPageViewToppersOfCourse',\r\n TOC_PAGE_MAIL_THE_PERSON = 'tocPageMailThePerson',\r\n TOC_PAGE_CALL_THE_PERSON = 'tocPageCallThePerson',\r\n TOC_PAGE_POST_VIEWS_IN_DISCUSSION_FORUM = 'tocPagePostViewsInDiscussionForum',\r\n TOC_PAGE_LEARN_THE_COURSE = 'tocPageLearnTheCourse',\r\n TOC_PAGE_LIKE_THE_COURSE = 'tocPageLikeTheCourse',\r\n TOC_PAGE_SHARE_THE_COURSE = 'tocPageShareTheCourse',\r\n TOC_PAGE_ADD_COURSE_TO_GOALS = 'tocPageAddCourseToGoals',\r\n TOC_PAGE_ADD_COURSE_TO_PLAYLIST = 'tocPageAddCourseToPlaylist',\r\n TOC_PAGE_ADD_COURSE_TO_WATCHLIST = 'tocPageAddCourseToWatchlist',\r\n TOC_PAGE_GIVE_COURSE_FEEDBACK = 'tocPageGiveCourseFeedback',\r\n TOC_PAGE_RESUME_THE_COURSE = 'tocPageResumeTheCourse',\r\n TOC_PAGE_START_OVER_THE_COURSE = 'tocPageStartOverTheCourse',\r\n TOC_PAGE_GO_TO_COURSE_QUIZ = 'tocPageGoToCourseQuiz',\r\n TOC_PAGE_GO_TO_COURSE_HANDS_ON = 'tocPageGoToCourseHandsOn',\r\n\r\n // Navbar\r\n NAVBAR = 'navbar',\r\n NAVBAR_VIEW_LOGO = 'navbarViewLogo',\r\n NAVBAR_CATALOG_ICON = 'navbarCatalogIcon',\r\n NAVBAR_NAVIGATOR_ICON = 'navbarNavigatorIcon',\r\n NAVBAR_NOTIFICATION_ICON = 'navbarNotificationIcon',\r\n NAVBAR_SETTINGS_ICON = 'navbarSettingsIcon',\r\n NAVBAR_SEARCH_ICON = 'navbarSearchIcon',\r\n NAVBAR_APPS_ICON = 'navbarAppsIcon',\r\n\r\n // Home Page\r\n HOME_PAGE = 'homePage',\r\n HOME_PAGE_VIEW_CAROUSEL = 'homePageViewCarousel',\r\n HOME_PAGE_VIEW_CONTINUE_LEARNING_STRIP = 'homePageViewContinueLearningStrip',\r\n HOME_PAGE_VIEW_FEATURED_APPS_STRIP = 'homePageViewFeaturedAppsStrip',\r\n HOME_PAGE_VIEW_RECENT_ADDITION_TO_PLAYLISTS_STRIP = 'homePageViewRecentAdditionToPlaylistsStrip',\r\n HOME_PAGE_VIEW_BASED_ON_YOUR_INTERESTS_STRIP = 'homePageViewBasedOnYourInterestsStrip',\r\n HOME_PAGE_VIEW_BASED_ON_WHAT_YOU_VIEWED_STRIP = 'homePageViewBasedOnWhatYouViewedStrip',\r\n HOME_PAGE_VIEW_LATEST_STRIP = 'homePageViewLatestStrip',\r\n HOME_PAGE_VIEW_TRENDING_STRIP = 'homePageViewTrendingStrip',\r\n HOME_PAGE_SHOW_COMPLETED_FILTER = 'homePageShowCompletedFilter',\r\n HOME_PAGE_SHOW_RESOURCES_FILTER = 'homePageShowResourcesFilter',\r\n\r\n // TNC Page\r\n TNC_PAGE = 'tncPage',\r\n TNC_PAGE_VIEW_CONTEST_RULES_SECTION = 'tncPageViewContestRulesSection',\r\n TNC_PAGE_VIEW_DATA_PRIVACY_SECTION = 'tncPageViewDataPrivacySection',\r\n TNC_PAGE_ACCEPT_TERMS_AND_CONDITIONS = 'tncPageAcceptTermsAndConditions',\r\n\r\n // Blogs\r\n BLOGS = 'blogs',\r\n BLOG_VIEW_OTHERS_BLOGS = 'blogViewOthersBlogs',\r\n BLOGS_LIKE_OTHER_BLOGS = 'blogsLikeOtherBlogs',\r\n BLOGS_VIEW_MY_BLOGS = 'blogsViewMyBlogs',\r\n BLOGS_WRITE_NEW_BLOG = 'blogsWriteNewBlog',\r\n BLOGS_SAVE_BLOG_AS_DRAFT = 'blogsSaveBlogAsDraft',\r\n BLOGS_EDIT_MY_SAVED_BLOG = 'blogsEditMySavedBlog',\r\n BLOGS_PUBLISH_MY_BLOG = 'blogsPublishMyBlog',\r\n BLOGS_UPVOTE_FOR_BLOG = 'blogsUpvoteForBlog',\r\n BLOGS_DOWNVOTE_FOR_BLOG = 'blogsDownvoteForBlog',\r\n BLOGS_WRITE_RESPONSE_FOR_BLOG = 'blogsWriteResponseForBlog',\r\n BLOGS_DELETE_MY_BLOG = 'blogsDeleteMyBlog',\r\n BLOGS_EDIT_MY_RESPONSE = 'blogsEditMyResponse',\r\n BLOGS_DELETE_MY_RESPONSE = 'blogsDeleteMyResponse',\r\n BLOGS_VIEW_DRAFTS_SECTION = 'blogsViewDraftsSection',\r\n BLOGS_VIEW_PUBLISHED_SECTION = 'blogsViewPublishedSection',\r\n\r\n // Question and Answer\r\n QUESTION_AND_ANSWER = 'questionAndAnswer',\r\n QUESTION_AND_ANSWER_VIEW_ALL_QUESTIONS_AND_ANSWERS = 'questionAndAnswerViewAllQuestionsAndAnswers',\r\n QUESTION_AND_ANSWER_VIEW_ONLY_UNANSWERED_QUESTIONS = 'questionAndAnswerViewOnlyUnansweredQuestions',\r\n QUESTION_AND_ANSWER_VIEW_MY_TIMELINE = 'questionAndAnswerViewMyTimeline',\r\n QUESTION_AND_ANSWER_ASK_NEW_QUESTION = 'questionAndAnswerAskNewQuestion',\r\n QUESTION_AND_ANSWER_VIEW_SPECIFIC_QUESTION = 'questionAndAnswerViewSpecificQuestion',\r\n QUESTION_AND_ANSWER_UPVOTE_FOR_ANSWER = 'questionAndAnswerUpvoteForAnswer',\r\n QUESTION_AND_ANSWER_DOWNVOTE_FOR_ANSWER = 'questionAndAnswerDownvoteForAnswer',\r\n QUESTION_AND_ANSWER_LIKE_AN_ANSWER = 'questionAndAnswerLikeAnAnswer',\r\n QUESTION_AND_ANSWER_ADD_COMMENT_FOR_ANY_ANSWER = 'questionAndAnswerAddCommentForAnyAnswer',\r\n QUESTION_AND_ANSWER_ADD_ANSWER_FOR_ANY_QUESTION = 'questionAndAnswerAddAnswerForAnyQuestion',\r\n QUESTION_AND_ANSWER_SAVE_QUESTION_AS_DRAFT = 'questionAndAnswerSaveQuestionAsDraft',\r\n QUESTION_AND_ANSWER_PUBLISH_SAVED_QUESTION = 'questionAndAnswerPublishedSavedQuestion',\r\n QUESTION_AND_ANSWER_VIEW_DRAFTS_SECTION = 'questionAndAnswerViewDraftsSection',\r\n QUESTION_AND_ANSWER_VIEW_PUBLISHED_SECTION = 'questionAndAnswerViewPublishedSection',\r\n\r\n // Badges\r\n BADGES = 'badges',\r\n BADGES_VIEW_RECENTLY_EARNED_BADGE = 'badgesViewRecentlyEarnedBadge',\r\n BADGES_VIEW_ALL_EARNED_BADGES = 'badgesViewAllEarnedBadges',\r\n BADGES_VIEW_NEXT_TARGETTED_BADGES = 'badgesViewNextTargettedBadges',\r\n\r\n // Hands on Dashboard\r\n HANDS_ON_DASHBOARD = 'handsOnDashboard',\r\n HANDS_ON_DASHBOARD_VIEW_MY_DASHBOARD = 'handsOnDashboardViewMyDashboard',\r\n HANDS_ON_DASHBOARD_VIEW_SHARED_PROFILE_SECTION = 'handsOnDashboardViewSharedProfileSection',\r\n\r\n // Learning History\r\n LEARNING_HISTORY = 'learningHistory',\r\n LEARNING_HISTORY_VIEW_PROGRAMS_SECTION = 'learningHistoryViewProgramsSection',\r\n LEARNING_HISTORY_VIEW_COURSES_SECTION = 'learningHistoryViewCoursesSection',\r\n LEARNING_HISTORY_VIEW_LEARNING_MODULES_SECTION = 'learningHistoryViewLearningModulesSection',\r\n LEARNING_HISTORY_VIEW_RESOURCES_SECTION = 'learningHistoryViewResourcesSection',\r\n LEARNING_HISTORY_VIEW_CERTIFICATIONS_SECTION = 'learningHistoryViewCertificationsSection',\r\n LEARNING_HISTORY_APPLY_COMPLETED_FILTER = 'learningHistoryApplyCompletedFilter',\r\n LEARNING_HISTORY_VIEW_MORE_BUTTON = 'learningHistoryViewMoreButton',\r\n\r\n // Learning Time\r\n LEARNING_TIME = 'learningTime',\r\n LEARNING_TIME_VIEW_LEARNING_TIME_GRAPH = 'learningTimeViewLearningTimeGraph',\r\n LEARNING_TIME_APPLY_BAR_GRAPH_FILTER = 'learningTimeApplyBarGraphFilter',\r\n LEARNING_TIME_APPLY_DATE_RANGE_FILTER = 'learningTimeApplyDateRangeFilter',\r\n LEARNING_TIME_APPLY_TIME_SPENT_FILTER = 'learningTimeApplyTimeSpentFilter',\r\n LEARNING_TIME_APPLY_APP_AVERAGE_FILTER = 'learningTimeApplyAppAverageFilter',\r\n LEARNING_TIME_APPLY_USER_AVERAGE_OVER_PERIOD_FILTER = 'learningTimeApplyUserAverageOverPeriodFilter',\r\n\r\n // Notification\r\n NOTIFICATION = 'notification',\r\n NOTIFICATION_VIEW_RECENT_BADGE_EARNED = 'notificationViewRecentBadgeEarned',\r\n NOTIFICATION_VIEW_SHARED_PLAYLIST = 'notificationViewSharedPlaylist',\r\n NOTIFICATION_VIEW_SHARED_GOALS = 'notificationViewSharedGoals',\r\n\r\n // Profile\r\n PROFILE = 'profile',\r\n PROFILE_VIEW_BASIC_INFORMATION = 'profileViewBasicInformation',\r\n PROFILE_VIEW_RECENTLY_LEARNED_COURSES = 'profileViewRecentlyLearnedCourses',\r\n PROFILE_VIEW_LIKED_ITEMS = 'profileViewLikedItems',\r\n PROFILE_VIEW_BADGES_EARNED = 'profileViewBadgesEarned',\r\n\r\n // Behavioural Skills\r\n BEHAVIORAL_SKILLS = 'behavioralSkills',\r\n BEHAVIORAL_SKILLS_VIEW_MODEL_CLIENT_INTERACTIONS = 'behavioralSkillsViewModalClientInteractions',\r\n BEHAVIORAL_SKILLS_VIEW_CLIENT_INTERACTION_TESTS = 'behavioralSkillsViewClientInteractionTests',\r\n\r\n // Certifications\r\n CERTIFICATIONS = 'certifications',\r\n CERTIFICATIONS_VIEW_MY_APPROVALS_SECTION = 'certificationsViewMyApprovalsSection',\r\n CERTIFICATIONS_VIEW_MY_REQUESTS_SECTION = 'certificationsViewMyRequestsSection',\r\n CERTIFICATIONS_VIEW_MY_CERTIFICATIONS_SECTION = 'certificationsViewMyCertificationsSection',\r\n CERTIFICATIONS_APPLY_COMPLETION_STATUS_FILTER = 'certificationsApplyCompletionStatusFilter',\r\n\r\n // Code Crack\r\n CODE_CRACK = 'codeCrack',\r\n CODE_CRACK_VIEW_PUZZLE_MANIA = 'codeCrackViewPuzzleMania',\r\n CODE_CRACK_VIEW_CODE_CRACK = 'codeCrackViewCodeCrack',\r\n CODE_CRACK_VIEW_TECHNOLOGY_PLAYGROUND = 'codeCrackViewTechnologyPlayground',\r\n CODE_CRACK_WATCH_PROGRAMMING_CHALLENGES_VIDEO = 'codeCrackWatchProgrammingChallengesVideo',\r\n CODE_CRACK_VIEW_ACCELERATE = 'codeCrackViewAccelerate',\r\n CODE_CRACK_START_CODE_CRACK_TEST = 'codeCrackStartCodeCrackTest',\r\n CODE_CRACK_START_PUZZLE_MANIA = 'codeCrackStartPuzzleMania',\r\n CODE_CRACK_START_TECHNOLOGY_PLAYGROUND = 'codeCrackStartTechnologyPlayground',\r\n\r\n // Instructor Led Training\r\n INSTRUCTOR_LED_TRAINING = 'instructorLedTraining',\r\n INSTRUCTOR_LED_TRAINING_VIEW_TRAINING_SCHEDULE_SECTION = 'instructorLedTrainingViewTrainingScheduleSection',\r\n INSTRUCTOR_LED_TRAINING_VIEW_FEEDBACK_SECTION = 'instructorLedTrainingViewFeedbackSection',\r\n INSTRUCTOR_LED_TRAINING_VIEW_TRAININGS_PLANNED_BY_YOUR_TEAM_SECTION = 'instructorLedTrainingViewTrainingsPlannedByYourTeamSection',\r\n INSTRUCTOR_LED_TRAINING_SEARCH_TRAINING = 'instructorLedTrainingSearchTraining',\r\n INSTRUCTOR_LED_TRAINING_REGISTER_FOR_TRAINING = 'instructorLedTrainingRegisterForTraining',\r\n INSTRUCTOR_LED_TRAINING_GIVE_TRAINING_FEEDBACK = 'instructorLedTrainingGiveTrainingFeedback',\r\n\r\n // LeaderBoard\r\n LEADERBOARD = 'leaderboard',\r\n LEADERBOARD_VIEW_WEEKLY_SECTION = 'leaderboardViewWeeklySection',\r\n LEADERBOARD_VIEW_MONTHLY_SECTION = 'leaderboardViewMonthlySection',\r\n LEADERBOARD_VIEW_HALL_OF_FAME_SECTION = 'leaderboardViewHallOfSection',\r\n LEADERBOARD_APPLY_LEARNER_COLLABORATOR_FILTER = 'leaderboardApplyLearnerCollaboratorFilter',\r\n LEADERBOARD_BACK_DATE_BUTTON = 'leaderboardBackDatebutton',\r\n LEADERBOARD_FORWARD_DATE_BUTTON = 'leaderboardForwardDateButton',\r\n\r\n // Playground\r\n PLAYGROUND = 'playground',\r\n PLAYGROUND_VIEW_TECHNOLOGY_PLAYGROUNDS_STRIP = 'playgroundViewTechnologyPlaygorundsStrip',\r\n PLAYGROUND_VIEW_ASSESSMENTS_PLAYGROUNDS_STRIP = 'playgroundViewAssessmentsPlaygroundsStrip',\r\n\r\n // Puzzle Mania\r\n PUZZLE_MANIA = 'puzzleMania',\r\n PUZZLE_MANIA_VIEW_PUZZLE_MANIA = 'puzzleManiaViewPuzzleMania',\r\n PUZZLE_MANIA_VIEW_CODE_CRACK = 'puzzleManiaViewCodeCrack',\r\n PUZZLE_MANIA_VIEW_TECHNOLOGY_PLAYGROUND = 'puzzleManiaViewTechnologyPlayground',\r\n PUZZLE_MANIA_WATCH_PROGRAMMING_CHALLENGES_VIDEO = 'puzzleManiaWatchProgrammingChallengesVideo',\r\n PUZZLE_MANIA_VIEW_ACCELERATE = 'puzzleManiaViewAccelerate',\r\n PUZZLE_MANIA_START_CODE_CRACK_TEST = 'puzzleManiaStartCodeCrackTest',\r\n PUZZLE_MANIA_START_PUZZLE_MANIA = 'puzzleManiaStartPuzzleMania',\r\n PUZZLE_MANIA_START_TECHNOLOGY_PLAYGROUND = 'puzzleManiaStartTechnologyPlayground',\r\n\r\n // Full Stack Sales Leader\r\n FULL_STACK_SALES_LEADER = 'fullStackSalesLeader',\r\n FULL_STACK_SALES_LEADER_WATCH_LEADER_VIDEO = 'fullStackSalesLeaderWatchLeaderVideo',\r\n FULL_STACK_SALES_LEADER_EMBARK_ON_THIS_LEARNING_JOURNEY_BUTTON = 'fullStackSalesLeaderEmbarkOnThisLearningJourneyButton',\r\n FULL_STACK_SALES_LEADER_QUICK_TOUR_VIDEO_LINK = 'fullStackSalesLeaderQuickTourVideoLink',\r\n FULL_STACK_SALES_LEADER_FEEDBACK_LINK = 'fullStackSalesLeaderFeedbackLink',\r\n FULL_STACK_SALES_LEADER_DROP_NOTE_LINK = 'fullStackSalesLeaderDropNoteLink',\r\n\r\n // Onboarding\r\n ONBOARDING = 'onboarding',\r\n ONBOARDING_VIEW_DC_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewDcOnboardingProgramsStrip',\r\n ONBOARDING_VIEW_ORGANISATIONAL_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewOrganisationalOnboardingProgramsStrip',\r\n ONBOARDING_VIEW_ROLE_BASED_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewRoleBasedOnboardingProgramsStrip',\r\n ONBOARDING_VIEW_UNIT_AND_PROJECT_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewUnitAndProjectOnboardingProgramsStrip',\r\n\r\n // Search\r\n SEARCH = 'search',\r\n SEARCH_SEARCHING_CONTENT = 'searchSearchingContent',\r\n\r\n // Knowledge Hub\r\n KNOWLEDGE_HUB = 'knowledgeHub',\r\n KNOWLEDGE_HUB_SUBMIT_KNOWLEDGE_ARTIFACTS = 'knowledgeHubSubmitKnowledgeArtifacts',\r\n KNOWLEDGE_HUB_VIEW_TOP_PROJECTS_SECTION = 'knowledgeHubViewTopProjectsSection',\r\n KNOWLEDGE_HUB_VIEW_INTERESTING_READS_SECTION = 'knowledgeHubViewInterestingReadsSection',\r\n KNOWLEDGE_HUB_VIEW_MARKETING_SECTION = 'knowledgeHubViewMarketingSection',\r\n KNOWLEDGE_HUB_VIEW_KSHOP_CLASSIC_SECTION = 'knowledgeHubViewKshopClassicSection',\r\n KNOWLEDGE_HUB_VIEW_TRENDING_TOOLS_SECTION = 'knowledgeHubViewTrendingToolsSection',\r\n KNOWLEDGE_HUB_VIEW_DOCUMENTS_STRIP = 'knowledgeHubViewDocumentsStrip',\r\n KNOWLEDGE_HUB_VIEW_TOOLS_STRIP = 'knowledgeHubViewProjectReferencesStrip',\r\n KNOWLEDGE_HUB_VIEW_MARKETING_STRIP = 'knowledgeHubViewMarketingStrip',\r\n\r\n // Channels\r\n CHANNELS = 'channels',\r\n CHANNELS_VIEW_LEADERSHIP_SECTION = 'channelsViewLeadershipSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_PAGE = 'channelsViewRaviKumarPage',\r\n CHANNELS_VIEW_MOHIT_JOSHI_PAGE = 'channelsViewMohitJoshiPage',\r\n CHANNELS_FOLLOW_RAVI_KUMAR = 'channelsFollowRaviKumar',\r\n CHANNELS_MAIL_TO_RAVI_KUMAR = 'channelsMailToRaviKumar',\r\n CHANNELS_VIEW_ABOUT_RAVI_KUMAR_SECTION = 'channelsViewAboutRaviKumarSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_TWEETS_SECTION = 'channelsViewRaviKumarTweetsSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_ARTICLES_SECTION = 'channelsViewRaviKumarArticlesSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_TRAILBLAZERS_SECTION = 'channelsViewRaviKumarTrailblazersSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_COMMUNICATIONS_SECTION = 'channelsViewRaviKumarCommunicationsSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_DISCUSSION_SECTION = 'channelsViewraviKumarDiscussionSection',\r\n CHANNELS_LIKE_TWEET_RAVI_KUMAR = 'channelsLikeTweetRaviKumar',\r\n CHANNELS_SHARE_TWEET_RAVI_KUMAR = 'channelsShareTweetRaviKumar',\r\n CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_RAVI_KUMAR = 'channelsPostYourThoughtsInDiscussionRaviKumar',\r\n CHANNELS_FOLLOW_MOHIT_JOSHI = 'channelsFollowMohitJoshi',\r\n CHANNELS_MAIL_TO_MOHIT_JOSHI = 'channelsMailToMohitJoshi',\r\n CHANNELS_VIEW_ABOUT_MOHIT_JOSHI_SECTION = 'channelsViewAboutMohitJoshiSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_TWEETS_SECTION = 'channelsViewMohitJoshiTweetsSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_ARTICLES_SECTION = 'channelsViewMohitJoshiArticlesSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_TRAILBLAZERS_SECTION = 'channelsViewMohitJoshiTrailblazersSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_COMMUNICATIONS_SECTION = 'channelsViewMohitJoshiCommunicationsSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_DISCUSSION_SECTION = 'channelsViewMohitJoshiDiscussionSection',\r\n CHANNELS_LIKE_TWEET_MOHIT_JOSHI = 'channelsLikeTweetMohitJoshi',\r\n CHANNELS_SHARE_TWEET_MOHIT_JOSHI = 'channelsShareTweetMohitJoshi',\r\n CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_MOHIT_JOSHI = 'channelsPostYourThoughtsInDiscussionMohitJoshi',\r\n CHANNELS_VIEW_CORPORATE_SECTION = 'channelsViewCorporateSection',\r\n CHANNELS_VIEW_EXPERIENCE_WOW_PAGE = 'channelsViewExperienceWowPage',\r\n CHANNELS_VIEW_iGOT_KNOWLEDGE_INSTITUTE_PAGE = 'channelsViewiGOTKnowledgeInstitutePage',\r\n CHANNELS_VIEW_CMT_LEARNING_HUB_PAGE = 'channelsViewCmtLearningHubPage',\r\n CHANNELS_VIEW_FULL_STACK_SALES_LEADERS_PAGE = 'channelsViewFullStackSalesLeaderPage',\r\n\r\n // Experience Wow Page\r\n EXPERIENCE_WOW_PAGE = 'experienceWowPage',\r\n EXPERIENCE_WOW_PAGE_VIEW_PAGE_SECTIONS = 'experienceWowPageViewPageSections',\r\n EXPERIENCE_WOW_PAGE_CHECK_iGOT_STATISTICS = 'experienceWowPageCheckiGOTStatistics',\r\n EXPERIENCE_WOW_PAGE_CHECK_iGOT_ME_STATISTICS = 'experienceWowPageCheckiGOTMeStatistics',\r\n EXPERIENCE_WOW_PAGE_PROVIDE_SUGGESTIONS = 'experienceWowPageProvideSuggestions',\r\n EXPERIENCE_WOW_PAGE_SEND_MAIL_FOR_BECOMING_COCREATOR = 'experienceWowPageSendMailForBecomingCocreator',\r\n\r\n // iGOT Radio\r\n iGOT_RADIO = 'iGOTRadio',\r\n iGOT_RADIO_VIEW_PODCASTS_STRIP = 'iGOTRadioViewPodcastsStrip',\r\n\r\n // iGOT TV\r\n iGOT_TV = 'iGOTTv',\r\n iGOT_TV_VIEW_JUST_FOR_YOU_SECTION = 'iGOTTvViewJustForYouSection',\r\n iGOT_TV_VIEW_MUST_VIEW_STRIP = 'iGOTTvViewMustViewStrip',\r\n iGOT_TV_VIEW_LATEST_STRIP = 'iGOTTvViewLatestStrip',\r\n iGOT_TV_VIEW_CHANNELS_SECTION = 'iGOTTvViewChannelsSection',\r\n iGOT_TV_VIEW_CHANNELS_STRIP = 'iGOTTvViewChannelsStrip',\r\n iGOT_TV_VIEW_BROADCAST_SECTION = 'iGOTTvViewBroadcastSection',\r\n iGOT_TV_VIEW_PREVIOUS_EVENTS_LIST = 'iGOTTvViewPreviousEventsList',\r\n iGOT_TV_VIEW_LIVE_EVENTS_LIST = 'iGOTTvViewLiveEventsList',\r\n iGOT_TV_VIEW_UPCOMING_EVENTS_LIST = 'iGOTTvViewUpcomingEventsList',\r\n\r\n // Leadership Messages\r\n LEADERSHIP_MESSAGES = 'leadershipMessages',\r\n LEADERSHIP_MESSAGES_VIEW_LEADERSHIP_VIDEO = 'leadershipMessagesViewLeadershipVideo',\r\n\r\n // Living Labs\r\n LIVING_LABS = 'livingLabs',\r\n LIVING_LABS_VIEW_LIVING_LABS_STRIP = 'livingLabsViewLivingLabsStrip',\r\n\r\n // Americas Confluence 2018\r\n AMERICAS_CONFLUENECE = 'americasConfluence',\r\n AMERICAS_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS = 'americasConfluenceViewConfluenceVideosStrips',\r\n\r\n // APAC Confluence 2019\r\n APAC_CONFLUENECE = 'apacConfluence',\r\n APAC_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS = 'apacConfluenceViewConfluenceVideosStrips',\r\n\r\n // EMEA Confluence 2018\r\n EMEA_CONFLUENECE = 'emeaConfluence',\r\n EMEA_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS = 'emeaConfluenceViewConfluenceVideosStrips',\r\n\r\n // Connect 2019\r\n CONNECT = 'connect',\r\n CONNECT_VIEW_CONTENT_STRIP = 'connectViewContentStrip',\r\n\r\n // Live Events\r\n LIVE_EVENTS = 'liveEvents',\r\n LIVE_EVENTS_WATCH_LIVE = 'liveEventsWatchLive',\r\n LIVE_EVENTS_WATCH_CLASSROOM_BROADCAST = 'liveEventsWatchClassroomBroadcast',\r\n LIVE_EVENTS_WATCH_THREE_SIXTY_VIDEO = 'liveEventsWatchThreeSixtyVideo',\r\n LIVE_EVENTS_WATCH_FAMILY_MATTERS_VIDEO = 'liveEventsWatchFamilyMattersVideo',\r\n LIVE_EVENTS_WATCH_CONFLUENCE_EVENTS = 'liveEventsWatchConfluenceEvents',\r\n\r\n // Digital Assistant Tour\r\n DIGITAL_ASSISTANT_TOUR = 'digitalAssistantTour',\r\n DIGITAL_ASSISTANT_TOUR_WATCH_TOUR_VIDEO = 'digitalAssistantTourWatchTourVideo',\r\n\r\n // Quick Tour\r\n QUICK_TOUR = 'quickTour',\r\n QUICK_TOUR_WATCH_TOUR_VIDEO = 'quickTourWatchTourVideo',\r\n\r\n // Logout\r\n LOGOUT = 'logout',\r\n LOGOUT_LOGS_OUT_FROM_APPLICATION = 'logoutLogsOutFromApplication',\r\n\r\n // My Analytics\r\n MY_ANALYTICS = 'myAnalytics',\r\n MY_ANALYTICS_APPLY_QUARTER_FILTERS = 'myAnalyticsApplyQuarterFilters',\r\n MY_ANALYTICS_VIEW_MY_LEARNING_SECTION = 'myAnalyticsViewMyLearningSection',\r\n MY_ANALYTICS_VIEW_MY_ASSESSMENT_SECTION = 'myAnalyticsViewMyAssessmentSection',\r\n MY_ANALYTICS_VIEW_MY_REFACTORING_SECTION = 'myAnalyticsViewMyRefactoringSection',\r\n MY_ANALYTICS_VIEW_MY_PLANS_SECTION = 'myAnalyticsViewMyPlansSection',\r\n MY_ANALYTICS_VIEW_MY_COLLABORATORS_SECTION = 'myAnalyticsViewMyCollaboratorsSection',\r\n MY_ANALYTICS_VIEW_MY_FEATURES_USAGE_SECTION = 'myAnalyticsViewTopCoursesSection',\r\n MY_ANALYTICS_VIEW_MY_LEARNING_MINUTES = 'myAnalyticsViewMyLearningMinutes',\r\n MY_ANALYTICS_VIEW_MY_LEARNING_POINTS = 'myAnalyticsViewMyLearningPoints',\r\n MY_ANALYTICS_VIEW_BADGES = 'myAnalyticsViewBadges',\r\n MY_ANALYTICS_VIEW_TIME_SPENT_BY_USER = 'myAnalyticsViewTimeSpentByUser',\r\n MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ON_iGOT = 'myAnalyticsViewAverageMinutesOniGOT',\r\n MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ACROSS_DIMENSIONS = 'myAnalyticsViewAverageMinutesAcrossDimensions',\r\n MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_USER = 'myAnalyticsViewPercentageTimeSpentByUser',\r\n MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_INFOSCIONS = 'myAnalyticsViewPercentageTimeSpentByInfoscions',\r\n MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_PEERS = 'myAnalyticsViewPercentageTimeSpentByPeers',\r\n MY_ANALYTICS_VIEW_TOTAL_ASSESSMENTS = 'myAnalyticsViewTotalAssessments',\r\n MY_ANALYTICS_VIEW_PENDING_ASSESSMENTS = 'myAnalyticsViewPendingAssessments',\r\n MY_ANALYTICS_VIEW_CERTIFICATIONS = 'myAnalyticsViewCertifications',\r\n MY_ANALYTICS_VIEW_ASSESSMENTS = 'myAnalyticsViewAssessments',\r\n MY_ANALYTICS_VIEW_RECENT_ASSESSMENTS = 'myAnalyticsViewRecentAssessments',\r\n MY_ANALYTICS_VIEW_ASSESSMENT_DETAILS = 'myAnalyticsViewAssessmentDetails',\r\n MY_ANALYTICS_VIEW_RECENT_ASSESSMENT = 'myAnalyticsViewRecentAssessment',\r\n MY_ANALYTICS_VIEW_MY_REFACTORING_PROGRAM = 'myAnalyticsViewMyRefactoringProgram',\r\n MY_ANALYTICS_VIEW_NAVIGATOR = 'myAnalyticsViewNavigator',\r\n MY_ANALYTICS_VIEW_AI_AND_AUTOMATION_PROGRESS = 'myAnalyticsViewAiAndAutomationProcess',\r\n MY_ANALYTICS_VIEW_MY_GOALS = 'myAnalyticsViewMyGoals',\r\n MY_ANALYTICS_VIEW_PLAYLIST = 'myAnalyticsViewPlaylist',\r\n MY_ANALYTICS_VIEW_GOALS_SHARED_WITH_USER = 'myAnalyticsViewGoalsSharedWithUser',\r\n MY_ANALYTICS_VIEW_DETAILED_COURSES_PROGRESS = 'myAnalyticsViewDetailedCoursesProgress',\r\n MY_ANALYTICS_VIEW_GOALS_SHARED_BY_USER = 'myAnalyticsViewGoalsSharedByUser',\r\n MY_ANALYTICS_VIEW_ARTIFACTS_SHARED_BY_USER = 'myAnalyticsViewArtifactsSharedByUser',\r\n MY_ANALYTICS_VIEW_EXPERTS_USER_CONTACTED = 'myAnalyticsViewExpertsUserContacted',\r\n MY_ANALYTICS_VIEW_DETAILED_GOALS_SHARING = 'myAnalyticsViewDetailedGoalsSharing',\r\n MY_ANALYTICS_VIEW_PLAYGROUNDS = 'myAnalyticsViewPlaygrounds',\r\n MY_ANALYTICS_VIEW_LIKES = 'myAnalyticsViewLikes',\r\n MY_ANALYTICS_VIEW_SEARCH = 'myAnalyticsViewSearch',\r\n MY_ANALYTICS_VIEW_iGOT_TV = 'myAnalyticsViewiGOTTv',\r\n MY_ANALYTICS_VIEW_iGOT_RADIO = 'myAnalyticsViewiGOTRadio',\r\n MY_ANALYTICS_VIEW_iGOT_LIVE = 'myAnalyticsViewiGOTLive',\r\n MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_UNIT = 'myAnalyticsViewTopCoursesByUserUnit',\r\n MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_PEERS = 'myAnalyticsViewTopCoursesbyUserPeers',\r\n\r\n // Learning Analytics\r\n LEARNING_ANALYTICS = 'learningAnalytics',\r\n LEARNING_ANALYTICS_SEARCH_FOR_PARTICIPANTS_AND_EDUCATORS = 'learningAnalyticsSearchForParticipantsAndEducators',\r\n LEARNING_ANALYTICS_UNIT_FILTER = 'learningAnalyticsUnitFilter',\r\n LEARNING_ANALYTICS_PU_FILTER = 'learningAnalyticsPuFilter',\r\n LEARNING_ANALYTICS_DU_FILTER = 'learningAnalyticsDuFilter',\r\n LEARNING_ANALYTICS_ACCOUNT_FILTER = 'learningAnalyticsAccountFilter',\r\n LEARNING_ANALYTICS_LOCATION_FILTER = 'learningAnalyticsLocationFilter',\r\n LEARNING_ANALYTICS_QUARTER_FILTER = 'learningAnalyticsQuarterFilter',\r\n LEARNING_ANALYTICS_COMPLETED_FILTER = 'learningAnalyticsCompletedFilter',\r\n LEARNING_ANALYTICS_ETA_FILTER = 'learningAnalyticsEtaFilter',\r\n LEARNING_ANALYTICS_UNIQUE_USERS_DATA = 'learningAnalyticsUniqueUsersData',\r\n LEARNING_ANALYTICS_USERS_BY_ONSITE_OFFSHORE = 'learningAnalyticsUsersByOnsiteOffshore',\r\n LEARNING_ANALYTICS_USERS_BY_DEVICE_TYPE = 'learningAnalyticsUsersByDeviceType',\r\n LEARNING_ANALYTICS_USERS_BY_UNIT = 'learningAnalyticsUsersByUnit',\r\n LEARNING_ANALYTICS_USERS_BY_TRACK = 'learningAnalyticsUsersByTrack',\r\n LEARNING_ANALYTICS_USERS_BY_PU_SALES = 'learningAnalyticsUsersByPuSales',\r\n LEARNING_ANALYTICS_USERS_BY_CU_TYPE = 'learningAnalyticsUsersByCuType',\r\n LEARNING_ANALYTICS_USERS_BY_SKILL = 'learningAnalyticsUsersBySkill',\r\n LEARNING_ANALYTICS_USERS_BY_TOPICS = 'learningAnalyticsUsersByTopics',\r\n LEARNING_ANALYTICS_USERS_BY_HORIZON = 'learningAnalyticsUsersByHorizon',\r\n LEARNING_ANALYTICS_USERS_GROWTH = 'learningAnalyticsUsersGrowth',\r\n LEARNING_ANALYTICS_USERS_DETAILS = 'learningAnalyticsUsersDetails',\r\n LEARNING_ANALYTICS_VIEW_ALL_TRAININGS_SECTION = 'learningAnalyticsViewAllTrainingsSection',\r\n LEARNING_ANALYTICS_TALENT_GRID_FILTER = 'learningAnalyticstalentGridFilter',\r\n LEARNING_ANALYTICS_STACK_FILTER = 'learningAnalyticsStackFilter',\r\n LEARNING_ANALYTICS_UNIQUE_PARTICIPANTS = 'learningAnalyticsUniqueParticipants',\r\n LEARNING_ANALYTICS_OVERALL_PARTICIPANTS = 'learningAnalyticsOverallParticipants',\r\n LEARNING_ANALYTICS_AVERAGE_DAYS = 'learningAnalyticsAverageDays',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_ONSITE_ONSHORE = 'learningAnalyticsParticipantsByOnsiteOnshore',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_UNIT = 'learningAnalyticsParticipantsByUnit',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_PU = 'learningAnalyticsParticipantsByPu',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL_TYPE = 'learningAnalyticsParticipantsBySkillType',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL = 'learningAnalyticsParticipantsBySkill',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_STACKS = 'learningAnalyticsParticipantsByStacks',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_NEW_SERVICES = 'learningAnalyticsParticipantsByNewServices',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_LEARNING_TRACK = 'learningAnalyticsParticipantsByLearningTrack',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_OFFERING_MODE = 'learningAnalyticsParticipantsByOfferingMode',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_TOPICS = 'learningAnalyticsParticipantsByTopics',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_ABCD = 'learningAnalyticsParticipantsByAbcd',\r\n LEARNING_ANALYTICS_PARTICIPANTS_DETAILS = 'learningAnalyticsParticipantsDetails',\r\n LEARNING_ANALYTICS_SCHEDULES_SECTION = 'learningAnalyticsSchedulesSection',\r\n LEARNING_ANALYTICS_SCHEDULE_DATE_FILTER = 'learningAnalyticsScheduleDateFilter',\r\n LEARNING_ANALYTICS_PARTICIPANTS = 'learningAnalyticsParticipants',\r\n LEARNING_ANALYTICS_EDUCATORS = 'learningAnalyticsEducators',\r\n LEARNING_ANALYTICS_COURSES = 'learningAnalyticsCourses',\r\n LEARNING_ANALYTICS_SCHEDULES = 'learningAnalyticsSchedules',\r\n LEARNING_ANALYTICS_VIEW_TRAINING_SCHEDULES_SECTION = 'learningAnalyticsTrainingSchedulesSection',\r\n LEARNING_ANALYTICS_COURSES_BY_OFFERING_MODE = 'learningAnalyticsCoursesByOfferingMode',\r\n LEARNING_ANALYTICS_COURSES_BY_TRACK = 'learningAnalyticsCoursesByTrack',\r\n LEARNING_ANALYTICS_COURSES_BY_TOPIC = 'learningAnalyticsCoursesByTopic',\r\n LEARNING_ANALYTICS_COURSES_BY_ABCD = 'learningAnalyticsCoursesByAbcd',\r\n LEARNING_ANALYTICS_COURSES_BY_SKILL = 'learningAnalyticsCoursesBySkill',\r\n\r\n // Apps Page\r\n APPS_PAGE = 'appsPage',\r\n APPS_PAGE_VIEW_DIFFERENT_APPS_ICONS = 'appsPageViewDifferentAppsIcons',\r\n\r\n // Course Card\r\n COURSE_CARD = 'courseCard',\r\n COURSE_CARD_LIKE_THE_COURSE_BUTTON = 'courseCardLikeTheCourseButton',\r\n COURSE_CARD_SHARE_THE_COURSE_BUTTON = 'courseCardShareTheCourseButton',\r\n COURSE_CARD_ADD_COURSE_TO_GOALS_BUTTON = 'courseCardAddCourseToGoalsButton',\r\n COURSE_CARD_ADD_COURSE_TO_PLAYLIST_BUTTON = 'courseCardAddCourseToPlaylistButton',\r\n COURSE_CARD_VIEW_MORE_OPTIONS_BUTTON = 'courseCardViewMoreOptionsButton',\r\n COURSE_CARD_START_COURSE_OPTION = 'courseCardStartCourseOption',\r\n COURSE_CARD_VIEW_TOC_OPTION = 'courseCardViewTocOption',\r\n COURSE_CARD_COHORTS_OPTION = 'courseCardCohortsOption',\r\n COURSE_CARD_ANALYTICS_OPTION = 'courseCardAnalyticsOption',\r\n\r\n // Search Results Page\r\n SEARCH_RESULTS_PAGE = 'searchResultsPage',\r\n SEARCH_RESULTS_PAGE_VIEW_LEARNING_SECTION = 'searchResultsPageViewLearningSection',\r\n SEARCH_RESULTS_PAGE_VIEW_CERTIFICATIONS_SECTION = 'searchResultsPageViewCertificationsSection',\r\n SEARCH_RESULTS_PAGE_VIEW_KNOWLEDGE_SECTION = 'searchResultsPageViewKnowledgeSection',\r\n SEARCH_RESULTS_PAGE_VIEW_PROJECTS_SECTION = 'searchResultsPageViewProjectsSection',\r\n SEARCH_RESULTS_PAGE_VIEW_SOCIAL_SECTION = 'searchResultsPageViewSocialSection',\r\n SEARCH_RESULTS_PAGE_CATALOG_FILTER = 'searchResultsPageCatalogFilter',\r\n SEARCH_RESULTS_PAGE_DURATION_FILTER = 'searchResultsPageDurationFilter',\r\n SEARCH_RESULTS_PAGE_CONTENT_TYPE_FILTER = 'searchResultsPageContentTypeFilter',\r\n SEARCH_RESULTS_PAGE_LEVEL_FILTER = 'searchResultsPageLevelFilter',\r\n SEARCH_RESULTS_PAGE_SOURCE_FILTER = 'searchResultsPageSourceFilter',\r\n SEARCH_RESULTS_PAGE_UNIT_FILTER = 'searchResultsPageUnitFilter',\r\n SEARCH_RESULTS_PAGE_TYPE_FILTER = 'searchResultsPageTypeFilter',\r\n SEARCH_RESULTS_PAGE_PUBLISHED_DATE_FILTER = 'searchResultsPagePublishedDateFilter',\r\n SEARCH_RESULTS_PAGE_CATEGORY_FILTER = 'searchResultsPageCategoryFilter',\r\n SEARCH_RESULTS_PAGE_ITEM_TYPE_FILTER = 'searchResultsPageItemTypeFilter',\r\n SEARCH_RESULTS_PAGE_TOPICS_FILTER = 'searchResultsPageTopicsFilter',\r\n SEARCH_RESULTS_PAGE_AUTHORS_FILTER = 'searchResultsPageAuthorsFilter',\r\n SEARCH_RESULTS_PAGE_TAGS_FILTER = 'searchResultsPageTagsFilter',\r\n SEARCH_RESULTS_PAGE_GROUPS_FILTER = 'searchResultsPageGroupsFilter',\r\n SEARCH_RESULTS_PAGE_VIEW_RESULT_CARDS = 'searchResultsPageViewResultCards',\r\n SEARCH_RESULTS_PAGE_VIEW_RELATED_CONCEPTS = 'searchResultsPageViewRelatedConcepts',\r\n\r\n // Lab42 Pages\r\n LAB_42_INTERVIEW = 'interview',\r\n LAB_42_DIALOGUE = 'dialogue',\r\n LAB_42_STRATEGY_MAP = 'strategyMap',\r\n LAB_42_VIRTUAL_CLASSROOM = 'virtualClassroom',\r\n LAB_42_PROJECT_STACK = 'projectStack',\r\n LAB_42_LIVE_TRANSCRIBE = 'liveTranscribe',\r\n LAB_42_EPOCH = 'epoch',\r\n\r\n // Learning Assistant Pages\r\n LEARNING_ASSISTANT_MAQ = 'learning-assistant-maq',\r\n LEARNING_ASSISTANT_ILIPDP = 'learning-assistant-ilipdp',\r\n}\r\n","export enum EInstance {\r\n INSTANCE = 'RootOrg',\r\n}\r\n","export function getStringifiedQueryParams(obj: { [key: string]: number | string | undefined | string[] }) {\r\n return Object.entries(obj)\r\n .filter(u => u[1])\r\n .map(u => {\r\n return `${u[0]}=${u[1]}`\r\n })\r\n .join('&')\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@sunbird-cb/utils-v2/lib/services/configurations.service.ts","ng://@sunbird-cb/utils-v2/lib/services/value.service.ts","ng://@sunbird-cb/utils-v2/lib/components/image-crop/image-crop.component.ts","ng://@sunbird-cb/utils-v2/lib/components/image-crop/image-crop.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/class-change-on-scroll/class-change-on-scroll.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/default-thumbnail/default-thumbnail.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/default-thumbnail/default-thumbnail.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/image-responsive/image-responsive.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/image-responsive/image-responsive.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/in-view-port/in-view-port.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/in-view-port/in-view-port.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/navigation/navigation.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/navigation/navigation.module.ts","ng://@sunbird-cb/utils-v2/lib/directives/permission/permission.directive.ts","ng://@sunbird-cb/utils-v2/lib/directives/permission/permission.module.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller/horizontal-scroller.component.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller/horizontal-scroller.module.ts","ng://@sunbird-cb/utils-v2/lib/services/event.model.ts","ng://@sunbird-cb/utils-v2/lib/services/utility.service.ts","ng://@sunbird-cb/utils-v2/lib/services/event.service.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.component.ts","ng://@sunbird-cb/utils-v2/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.module.ts","ng://@sunbird-cb/utils-v2/lib/services/logger.service.ts","ng://@sunbird-cb/utils-v2/lib/services/auth-microsoft.service.ts","ng://@sunbird-cb/utils-v2/lib/services/auth-keycloak.service.ts","ng://@sunbird-cb/utils-v2/lib/helpers/logout/logout.component.ts","ng://@sunbird-cb/utils-v2/lib/helpers/logout/logout.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-count-transform/pipe-count-transform.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-date-concat/pipe-date-concat.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter/pipe-filter.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter/pipe-filter.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-ordinal/pipe-ordinal.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-ordinal/pipe-ordinal.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-email/pipe-email.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-email/pipe-email.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v2/pipe-filter-v2.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v2/pipe-filter-v2.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v3/pipe-filter-v3.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-v3/pipe-filter-v3.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-filter-search/pipe-filter-search.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-list-filter/pipe-list-filter.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-relative-time/pipe-relative-time.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-order-by/pipe-order-by.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-order-by/pipe-order-by.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-limit-to/pipe-limit-to.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-name-transform/pipe-name-transform.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-partial-content/pipe-partial-content.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-public-URL/pipe-public-URL.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-public-URL/pipe-public-URL.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-certificate-image-URL/pipe-certimage-URL.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-certificate-image-URL/pipe-certimage-URL.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-nic-relative/pipe-nic-relative.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-nic-relative/pipe-nic-relative.module.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-coursename/pipe-coursename.pipe.ts","ng://@sunbird-cb/utils-v2/lib/pipes/pipe-coursename/PipeCourseNameModule.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/explore-detail.resolver.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page.model.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/marketing-offering.resolve.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page.constant.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page.resolver.ts","ng://@sunbird-cb/utils-v2/lib/services/configurations.model.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/page-name.resolver.ts","ng://@sunbird-cb/utils-v2/lib/resolvers/module-name.resolver.ts","ng://@sunbird-cb/utils-v2/lib/services/widget-content.model.ts","ng://@sunbird-cb/utils-v2/lib/services/widget-content.service.ts","ng://@sunbird-cb/utils-v2/lib/services/nps-grid.service.ts","ng://@sunbird-cb/utils-v2/lib/services/telemetry.service.ts","ng://@sunbird-cb/utils-v2/lib/services/subapplication-respond.service.ts","ng://@sunbird-cb/utils-v2/lib/services/user-preference.service.ts","ng://@sunbird-cb/utils-v2/lib/services/widget-resolver.model.ts","ng://@sunbird-cb/utils-v2/lib/services/multilingual-translations.service.ts","ng://@sunbird-cb/utils-v2/lib/constants/features.enum.ts","ng://@sunbird-cb/utils-v2/lib/constants/instances.enum.ts","ng://@sunbird-cb/utils-v2/lib/helpers/functions/getStringifiedQueryParams.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","r","ar","error","ConfigurationsService","appSetup","userUrl","baseUrl","sitePath","hostPath","window","location","replace","userRoles","userGroups","restrictedFeatures","restrictedWidgets","instanceConfig","appsConfig","rootOrg","org","activeOrg","isProduction","hasAcceptedTnc","profileDetailsStatus","isActive","userPreference","userProfile","userProfileV2","nodebbUserProfile","isAuthenticated","isNewUser","pinnedApps","BehaviorSubject","Set","prefChangeNotifier","ReplaySubject","tourGuideNotifier","authChangeNotifier","updateProfile","updateProfileObservable","asObservable","updateTourGuide","updateTourGuideObservable","updatePlatformRating","bottom","updatePlatformRatingObservable$","languageTranslationFlag","Subject","activeThemeObject","activeFontObject","isDarkMode","isIntranetAllowed","isRTL","activeLocale","activeLocaleGroup","completedActivity","completedTour","profileSettings","primaryNavBar","color","pageNavBar","primaryNavBarConfig","welcomeTabs","compentency","cstoken","changeNavBarFullView","openExploreMenuForMWeb","updateGlobalProfile","state","updateTourGuideMethod","updatePlatformRatingMethod","Injectable","args","providedIn","ValueService","breakpointObserver","isXSmall$","observe","Breakpoints","XSmall","pipe","map","res","matches","isLtMedium$","Small","BreakpointObserver","ImageCropComponent","dialogRef","configSvc","snackBar","valueSvc","data","EventEmitter","isRoundCrop","isNotOfRequiredSize","imageFileBase64","width","height","imageDimensions","croppedHeight","croppedWidth","cropperReadyToStart","fileName","canvasRotation","transform","resetValue","isXSmall","isThumbnail","imageFile","imageFileName","opHeight","opWidth","ngOnInit","_this","thumbnailSizeDetection","subscribe","updateSize","changeToDefaultImg","$event","target","src","logos","defaultContent","imageCropped","event","base64","cropimageFile","base64ImageToBlob","openSnackBar","message","open","duration","continueToImageCrop","fr","FileReader","readAsDataURL","onload","img","Image","str","pos","indexOf","b64","substr","imageContent","atob","buffer","ArrayBuffer","view","Uint8Array","charCodeAt","blob","Blob","type","b","lastModifiedDate","Date","name","File","flipAfterRotate","flippedH","flipH","flippedV","flipV","rotateLeft","rotateRight","flipHorizontal","zoom","scale","croppingImage","close","reset","Component","selector","template","MatDialogRef","MatSnackBar","Inject","MAT_DIALOG_DATA","Output","ImageCropModule","NgModule","declarations","imports","CommonModule","ImageCropperModule","MatIconModule","MatButtonModule","MatDialogModule","MatToolbarModule","MatCardModule","MatTooltipModule","MatSliderModule","exports","entryComponents","ScrollingUp","ScrollingDown","NoScrolling","ClassChangeOnScrollDirective","wsClassOnScrollDirChange","hasScrolledDown","windowScrollSubscription","lastScreenTop","currState","ScrollingStateEnum","defineProperty","fromEvent","debounceTime","clearTimeout","timeoutTimer","curr","scrollY","setScrollState","ngAfterViewInit","ngOnDestroy","unsubscribe","prev","resetScrollingState","setTimeout","Directive","Input","HostBinding","ClassChangeOnScrollModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","ngOnChanges","HostListener","DefaultThumbnailModule","customBreakPoints","ImageResponsiveDirective","srcBindUrl","currentSize","breakpointSubscription","distinctUntilChanged","breakpoints","setSrc","ImageResponsiveModule","InViewPortDirective","_el","inViewport","check","scroll","resize","partial","direction","el","nativeElement","elSize","offsetWidth","offsetHeight","rec","getBoundingClientRect","vp","innerWidth","innerHeight","tViz","top","bViz","lViz","left","rViz","right","vVisible","hVisible","emit","ElementRef","InViewPortModule","NavigationDirective","wsUtilsNavigation","openInNewTab","routeUrl","onMouseEnter","includes","preventDefault","stopPropagation","NavigationModule","PermissionDirective","PermissionModule","HorizontalScrollerComponent","loadStatus","onHover","loadNext","horizontalScrollElem","enablePrev","enableNext","scrollObserver","horizontalScrollElem_1","throttleTime","updateNavigationBtnStatus","timer","showPrev","clientWidth","scrollTo","scrollLeft","behavior","showNext","elem","scrollWidth","ViewChild","static","HorizontalScrollerModule","MatProgressSpinnerModule","WsEvents","IWsEventsFromWidget","IWsEventsFromPage","IWsEvents","ITelemetryPageContext","ITelemetryEdata","ITelemetryTabData","IWsEventTelemetry","IWsEventTelemetryPdfData","IWsEventTelemetrySurveyData","IWsEventTelemetryInteract","IWsEventTelemetryFeedback","IWsEventTelemetryImpression","IWsEventTelemetrySearch","IWsEventTelemetryHeartBeat","IWsEventTelemetryMediaData","WsEventType","WsEventLogLevel","WsAuditTypes","WsTimeSpentType","WsTimeSpentMode","externalTelemetrypdata","EnumTelemetrySubType","EnumTelemetryPdfActivity","EnumTelemetryMediaActivity","EnumTelemetryMediaState","EnumTelemetrymodules","EnumInteractTypes","EnumInteractSubTypes","UtilityService","http","platform","router","route","currentRouteData","events","NavigationEnd","snapshot","firstChild","root","getChildRouteData","RANDOM_ID_PER_USER","getJson","url","get","getLeafNodes","node","nodes","children","forEach","child","getPath","id","path","hasPath","pathArr","identifier","some","u","isIos","isAndroid","IOS","ANDROID","Boolean","appRef","webkit","messageHandlers","setRouteData","module","pageId","rd","HttpClient","Platform","Router","ActivatedRoute","EventService","environment","utilitySvc","todaysEvents","eventsSubject","events$","eventsChatbotSubject","chatbotEvents$","eventsGetStartSubject","getStartEvents$","eventsPRSubject","getPREvents$","dispatchEvent","pageContext","getContext","dispatchChatbotEvent","dispatchGetStartedEvent","dispatchPlatformRatingEvent","raiseInteractTelemetry","edata","object","eventType","Telemetry","eventLogLevel","Info","eventSubType","Interact","from","to","raiseFeedbackTelemetry","Feedback","raiseCustomImpression","Impression","routeDataContext","routeData","finalContext","pageIdExt","handleTabTelemetry","subType","CLICK","camelCase","context","position","index","getPublicUrl","mainUrl","split","contentHost","contentBucket","allEventDateFormat","datetime","date","getDate","year","getFullYear","month","getMonth","hours","getHours","minutes","getMinutes","seconds","getSeconds","formatedDate","moment","format","compareDate","startDate","now","day","slice","customDateFormat","time","stime","setEventListData","eventObj","undefined","data_1","keys","obj","floor","Math","creatordata","creatorDetails","JSON","parse","startTime","starttime","etime","endTime","endtime","eventDataObj","eventName","eventStartTime","eventEndTime","eventStartDate","eventCreatedOn","createdOn","eventDuration","eventjoined","eventThumbnail","appIcon","pastevent","HorizontalScrollerV2Component","eventService","sliderConfig","showNavs","showDots","cerificateCardMargin","activeNav","cardSubType","bottomDotsArray","stripConfig","getBottomDotsArray","raiseNavigationTelemetry","subtype","HOME","widthDiff","abs","round","ceil","slideTo","ele","diff","arrLength_1","cardWidth","document","getElementsByClassName","scrollerWidth","widgetsLength","defaultMaxWidgets","HorizontalScrollerV2Module","LoggerService","consoleError","console","consoleInfo","info","consoleLog","log","consoleWarn","warn","noConsole","removeConsoleAccess","noConsoleWithError","Error","storage","localStorage","API_ENDPOINTS","sharePointToken","AuthMicrosoftService","loggerSvc","msConfig","clientId","tenant","defaultEmailId","validEmailExtensions","isConfigured","emailUsed","code","msToken","accessToken","expiresOn","resource","tokenType","base","searchParam","URLSearchParams","response_type","client_id","redirect_uri","href","fragment","search","substring","toString","logoutUrl","redirectUrl","isValidEmail","init","config","microsoft","queryParams","has","origin","pathname","exchangeTokenForCode","_a","hash","history","replaceState","login","email","loginUrl","getToken","isValid","getTokenForEmail","_c","_b","loginForSSOEnabledEmbed","msPrevTS","parseInt","getItem","setItem","ext","endsWith","toPromise","response","getInstanceFromResponse","token","AuthKeycloakService","keycloakSvc","msAuthSvc","loginChangeSubject","isLoggedIn","disablePidCheck","userEmail","userName","userId","getKeycloakInstance","authenticated","sessionId","kc","tokenParsed","sub","idTokenParsed","encEmail","preferred_username","initAuth","setupGlobalAuthResponder","addKeycloakEventListener","keycloak","realm","initOptions","getSavedKcConfig","onLoad","checkLoginIframe","enableBearerInterceptor","loadUserProfileAtStartUp","bearerExcludedUrls","idpHint","defaultRedirectUrl","redirectUri","loginV2","_idpHint","register","logout","removeItem","sessionStorage","clear","force_logout","keycloakEvents$","KeycloakEventType","OnAuthError","OnAuthLogout","OnAuthRefreshError","OnAuthRefreshSuccess","OnAuthSuccess","OnReady","saveKeycloakConfig","OnTokenExpired","updateToken","filter","source","postMessage","contentWindow","app","plugin","kcInitOptions","idToken","refreshToken","timeSkew","stringify","lastSaved","processed","baseURI","KeycloakService","LogoutComponent","authSvc","translate","disabled","isDownloadableIos","isDownloadableAndroid","setDefaultLang","lang","use","confirmed","isContentDownloadAvailable","iOsAppRef","isAndroidApp","TranslateService","LogoutModule","TranslateModule","PipeConciseDateRangePipe","dateRange","prefix","suffix","fromDate","toDate","fromDateObj","toLocaleString","getTime","toDateObj","Pipe","PipeConciseDateRangeModule","PipeCountTransformPipe","views","String","toFixed","PipeCountTransformModule","PipeDateConcatPipe","months","dateStr","timeZone","PipeDateConcatModule","PipeDurationTransformPipe","h","defaultDuration","hmsCalculation","duration2","utc","asMilliseconds","duration2H","days","padStart","dur","space","PipeDurationTransformModule","PipeHtmlTagRemovalPipe","htmlString","PipeHtmlTagRemovalModule","PipeFilterPipe","term","item","key","RegExp","test","PipeFilterModule","PipeOrdinalPipe","suffixes","PipeOrdinalModule","PipeEmailPipe","join","PipeEmailModule","PipeFilterV2Pipe","items","searchText","searchTextLowerCase","toLowerCase","it","PipeFilterV2Module","PipeFilterV3Pipe","isAnd","Array","isArray","filterKeys_1","reduce","memo","keyName","PipeFilterV3Module","PipeFilterSearchPipe","_i","profileDetails","personalDetails","fullName","title","PipeFilterSearchModule","PipeListFilterPipe","toLocaleLowerCase","PipeListFilterModule","PipeRelativeTimePipe","fromNow","startOf","PipeRelativeTimeModule","OrderByPipe","orderBy","PipeOrderByModule","PipeLimitToPipe","limit","slicedString","PipeLimitToModule","PipeNameTransformPipe","firstName","trim","PipeNameTransformModule","PipePartialContentPipe","keys_1","tslib_1.__values","keys_1_1","PipePartialContentModule","PipeSafeSanitizerPipe","sanitizer","bypassSecurityTrustHtml","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","DomSanitizer","PipeSafeSanitizerModule","PipePublicURL","finalURL","PipePublicURLModule","PipeCertificateImageURL","certificateassets","bucketName","PipeCertificateImageURLModule","PipeNicRelativePipe","generateUrl","oldUrl","chunk","newChunk","azureHost","newLink","azureBucket","PipeNicRelativeModule","PipeCourseNamePipe","PipeCourseNameModule","ExploreDetailResolve","isIntranetAllowedSettings","_state","tag","decodeURIComponent","params","tags","pageUrl","pageType","pageKey","pageData","transformPageData","catchError","err","of","pageLayout","widgetData","widgets","widget","navigationBar","links","link","widgetSubType","text","pageTitle","clickUrl","pageBackLink","concat","edge","idx","strips","strip","request","searchV6","filters","andFilters","catalogPaths","isMobile","isInIntranet","noDataWidget","NsPage","MarketingOfferingResolve","IPage","INavBar","INavBackground","INavLink","INavLinkConfig","JSON_MAP","pagename","PageResolve","locale","getData","paramMap","setS3Cookie","_contentId","EMPTY","getContent","post","equivalentId","startsWith","forkJoin","mergeMap","status","artifactUrl","pageRequest","general","withLocale","LOCALE_ID","NsInstanceConfig","NsAppsConfig","NsUser","PageNameResolve","ModuleNameResolve","moduleName","charAt","toUpperCase","IConfig","IPortalUrls","IForgotPassword","ISourceLogo","IHubs","IIndexHtmlMeta","IFontSize","IKeycloak","ILocalsConfig","IMicrosoft","ITheme","IThemeColor","IOverrideThemeChanges","IDesktop","IMWeb","ILogos","IMailIds","IDetails","IPrimaryNavbarConfig","ITelemetryConfig","IAppsConfig","IGroup","IFeature","IUserProfile","INodebbUserProfile","IUserPidProfile","IUserPidProfileV2","IUserPidProfileVer2","ILanguages","NsContent","IContinueLearningData","IContent","EContentTypes","EMiscPlayerSupportedCollectionTypes","IContentMinimal","ICollectionHierarchyResponse","IRelatedContentMeta","ICreator","IContentTopic","IContact","IViewerContinueLearningRequest","EPrimaryCategory","PLAYER_SUPPORTED_COLLECTION_TYPES","COURSE","MODULE","PROGRAM","PLAYLIST","KB_SUPPORTED_CONTENT_TYPES","RESOURCE","PLAYLIST_SUPPORTED_CONTENT_TYPES","EMimeTypes","EDisplayContentTypes","EFilterCategory","ETagType","PROTECTED_SLAG_V8","API_END_POINTS","CONTENT","AUTHORING_CONTENT","CONTENT_LIKES","SET_S3_COOKIE","SET_S3_IMAGE_COOKIE","FETCH_MANIFEST","FETCH_WEB_MODULE_FILES","MULTIPLE_CONTENT","CONTENT_SEARCH_V5","CONTENT_SEARCH_V6","CONTENT_SEARCH_REGION_RECOMMENDATION","CONTENT_HISTORY","USER_CONTINUE_LEARNING","CONTENT_RATING","COLLECTION_HIERARCHY","REGISTRATION_STATUS","MARK_AS_COMPLETE_META","contentId","EXT_USER_COURSE_ENROLL","EXT_CONTENT_EROLL","CERT_DOWNLOAD","certId","WidgetContentService","fetchMarkAsCompleteMeta","fetchContent","hierarchyType","additionalFields","retry","fetchAuthoringContent","fetchMultipleContent","ids","fetchCollectionHierarchy","pageNumber","pageSize","fetchContentLikes","contentIds","fetchContentRatings","fetchContentHistory","continueLearning","collectionId","collectionType","reqBody","contextPathId","resourceId","timestamp","contextFullPath","dateAccessed","contextType","saveContinueLearning","catch","finally","content","setS3ImageCookie","_err","fetchManifest","fetchWebModuleContent","encodeURIComponent","req","query","searchRegionRecommendation","preLabelValue","country","labels","fetchContentRating","deleteContentRating","delete","addContentRating","getFirstChildInHierarchy","primaryCategory","KNOWLEDGE_ARTIFACT","PRACTICE_RESOURCE","FINAL_ASSESSMENT","COMP_ASSESSMENT","MANDATORY_COURSE_GOAL","OFFLINE_SESSION","getRegistrationStatus","fetchConfig","fetchExtUserContentEnroll","extContentEnroll","requestBody","downloadCert","NPSGridService","telemetryEvents","updateTelemetryDataObservable","updateTelemetryData","getFeedStatus","getFormData","formid","submitPlatformRating","deleteFeed","TelemetryService","eventsSvc","logger","npsSvc","previousUrl","telemetryConfig","pData","contextCdata","isAnonymousTelemetry","telArray","externalApps","RBCP","navigationStart","initializeConfig","addPlayerListener","addCustomEventListener","addInteractListener","addFeedbackListener","addTimeSpentListener","addSearchListener","addHearbeatListener","addCustomImpressionListener","addCustomListener","addCustomListenerForGetStart","addCustomListenerForPlatformRating","NavigationStart","updateTelemetryConfig","isAnonymousTelemetryRequired","endpoint","publicEndpoint","protectedEndpoint","pdata","uid","channel","rootOrgId","sid","getTelemetrySessionId","triggerNPSUpdate","start","$t","mode","pageid","env","actor","end","audit","props","prevstate","heartbeat","impression","objectType","page","getPageDetails","pageUrlParts","uri","objectId","externalImpression","impressionData","subApplicationName","externalConfig","PlatformRating","Loaded","Player","Play","Unloaded","interact","GetStarted","Chatbot","Page","isIframeSupported","mimeType","feedback","rating","commentid","commenttxt","ver","version","rollup","HeartBeat","Search","size","moduleValue","refferUrl","extractContentIdFromUrlParts","urlParts","tocIdx","viewerIdx","SubapplicationRespondService","contentSvc","activatedRoute","eventSvc","teleSvc","subAppname","continueLearningData","loaded","changeContextrespond","loadedRespond","applicationName","viewMode","continueData","lastName","requestId","parentContext","domainName","host","theme","themeName","fontSize","baseFontSize","selectedLocale","darkMode","subApplicationStartMode","user","roles","heartbeatFrequency","contentWindowinfo","continueLearningRespond","tData","eventId","Warn","Trace","unsubscribeResponse","endpoints","UserPreferenceService","configurationSvc","initialize","changedUserPref","saveUserPreference","fetchUserPreference","newUserPref","selectedTheme","themeClass","selectedFont","fontClass","selectedLangGroup","colorPallet","defaultCardType","oldUserPref_1","put","NsWidgetResolver","MultilingualTranslationsService","selectedLang","languageSelected","languageSelectedObservable","editProfileDetails","getLanguage","unMappedUser","additionalProperties","webPortalLang","translateLabelWithoutspace","nlabel","translationKey","instant","translationKeyn","translateLabel","sl","w","translateActualLabel","editProfileDetailsAPI","updatelanguageSelected","userid","reqUpdates","IUnitPermissionObject","IPermissions","IBaseConfig","IRegistrationConfig","IRegistrationsPermissionConfig","IRenderConfigWithTypedData","IWidgetData","ITitle","PLAYLIST_CREATE","PLAYLIST_ADD_NEW_CONTENT","PLAYLIST_REMOVE_EXISTING_CONTENT","PLAYLIST_DELETE","PLAYLIST_SHARE","GOAL","GOAL_CREATE_OWN","GOAL_CREATE_SUGGESTED","GOAL_EDIT_EXISTING_GOAL","GOAL_DELETE_EXISTING_GOAL","GOAL_SHARE_GOAL_WITH_OTHERS","GOAL_VIEW_ALL_GOALS_SECTION","GOAL_VIEW_IN_PROGRESS_GOALS_SECTION","GOAL_VIEW_COMPLETED_GOALS_SECTION","NAVIGATOR","NAVIGATOR_VIEW_NAVIGATOR_CAROUSEL","NAVIGATOR_VIEW_ROLES_PAGE","NAVIGATOR_SELECT_ANY_PILLAR","NAVIGATOR_PURSUE_ANY_OFFERING","NAVIGATOR_CREATE_GOAL_FROM_OFFERING","NAVIGATOR_VIEW_EXPLORE_PAGE","NAVIGATOR_SELECT_ANY_LEARNING_PATH","NAVIGATOR_CREATE_GOAL_FROM_LEARNING_PATH","NAVIGATOR_VIEW_SUGGESTIONS_PAGE","NAVIGATOR_SELECT_SUGGESTED_TOPICS","NAVIGATOR_GET_SUGGESTIONS_OF_SELECTED_TOPICS","NAVIGATOR_CREATE_GOAL_FROM_SELECTED_LEARNING_PATHS","NAVIGATOR_VIEW_INDUSTRIES_PAGE","NAVIGATOR_VIEW_CME_PAGE","NAVIGATOR_SELECT_SUBDOMAIN","NAVIGATOR_SELECT_PILLAR","NAVIGATOR_SELECT_THEME","NAVIGATOR_VIEW_CPG_PAGE","NAVIGATOR_VIEW_ENERGY_PAGE","NAVIGATOR_VIEW_FINANCIAL_SERVICES_PAGE","NAVIGATOR_VIEW_HEALTH_CARE_PAGE","NAVIGATOR_VIEW_INSURANCE_PAGE","NAVIGATOR_VIEW_LIFE_SCIENCES_PAGE","NAVIGATOR_VIEW_MFG_PAGE","NAVIGATOR_VIEW_RETAIL_PAGE","NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_PAGE","NAVIGATOR_VIEW_UTILITIES_PAGE","NAVIGATOR_VIEW_CME_ANALYTICS","NAVIGATOR_VIEW_GPG_ANALYTICS","NAVIGATOR_VIEW_ENERGY_ANALYTICS","NAVIGATOR_VIEW_FINANCIAL_SERVICES_ANALYTICS","NAVIGATOR_VIEW_HEALTH_CARE_ANALYTICS","NAVIGATOR_VIEW_INSURANCE_ANALYTICS","NAVIGATOR_VIEW_LIFE_SCIENCES_ANALYTICS","NAVIGATOR_VIEW_MFG_ANALYTICS","NAVIGATOR_VIEW_RETAIL_ANALYTICS","NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_ANALYTICS","NAVIGATOR_VIEW_UTILITIES_ANALYTICS","NAVIGATOR_VIEW_PILLARS_PAGE","NAVIGATOR_VIEW_DIFFERENT_COURSES_IN_PILLAR","NAVIGATOR_VIEW_FULL_STACK_PAGE","NAVIGATOR_VIEW_DIFFERENT_FULL_STACK_PROGRAMS","CATALOG","CATALOG_VIEW_CATALOG_LIST","CATALOG_SELECT_ITEM_FROM_CATALOG_LIST","CATALOG_VIEW_PROGRAMS_STRIP","CATALOG_VIEW_COURSES_STRIP","CATALOG_VIEW_LEARNING_MODULES_STRIP","CATALOG_VIEW_RESOURCES_STRIP","MARKETING_PAGE","MARKETING_PAGE_VIEW_BRAND_ASSETS_PAGE","MARKETING_PAGE_VIEW_CORPORATE_STRIP","MARKETING_PAGE_VIEW_EMPLOYEE_STRIP","MARKETING_PAGE_VIEW_EXPERIMENTAL_SHOWCASE_PAGE","MARKETING_PAGE_VIEW_HUBS_PAGE","MARKETING_PAGE_VIEW_CONNECTICUT_STRIP","MARKETING_PAGE_VIEW_INDIANA_STRIP","MARKETING_PAGE_VIEW_RHODE_ISLAND_STRIP","MARKETING_PAGE_VIEW_CLIENT_STORIES_PAGE","MARKETING_PAGE_VIEW_AGILE_SCALE_AT_DIGITAL_STRIP","MARKETING_PAGE_VIEW_AI_POWERED_CORE_STRIP","MARKETING_PAGE_VIEW_ALWAYS_ON_LEAVING_STRIP","MARKETING_PAGE_VIEW_SERVICES_PAGE","MARKETING_PAGE_VIEW_SERVICES_PENTAGON","MARKETING_PAGE_VIEW_OFFERINGS_LIST","MARKETING_PAGE_SELECT_ANY_OFFERING","MARKETING_PAGE_SELECT_ANY_PILLAR_FROM_PENTAGON","MARKETING_PAGE_VIEW_INDUSTRIES_PAGE","MARKETING_PAGE_VIEW_INDUSTRIES_LIST","MARKETING_PAGE_SELECT_ANY_INDUSTRY","MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_PAGE","MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_LIST","MARKETING_PAGE_SELECT_ANY_PRODUCT_AND_SUBSIDIARY","INTERESTS","INTERESTS_ADD_INTERESTS_FROM_SEARCH","INTERESTS_ADD_INTERESTS_FROM_OUR_SUGGESTIONS_SECTION","INTERESTS_REMOVE_INTERESTS_FROM_MY_INTERESTS_SECTION","INTERESTS_VIEW_INTERESTS_SEARCH_FIELD","INTERESTS_VIEW_MY_INTERESTS_SECTION","INTERESTS_VIEW_OWN_SUGGESTIONS_SECTION","INTERESTS_VIEW_MORE_SUGGESTIONS_BUTTON","FEEDBACK","FEEDBACK_VIEW_PLATFORM_FEEDBACK_SECTION","FEEDBACK_STAR_RATING_FOR_PLATFORM","FEEDBACK_WRITE_PLATFORM_FEEDBACK","FEEDBACK_RESET_PLATFORM_FEEDBACK","FEEDBACK_SUBMIT_PLATFORM_FEEDBACK","FEEDBACK_VIEW_CONTENT_FEEDBACK_SECTION","FEEDBACK_STAR_RATING_FOR_CONTENT","FEEDBACK_WRITE_CONTENT_FEEDBACK","FEEDBACK_RESET_CONTENT_FEEDBACK","FEEDBACK_SUBMIT_CONTENT_FEEDBACK","FEEDBACK_VIEW_ISSUE_REPORTING_SECTION","FEEDBACK_WRITING_ISSUE","FEEDBACK_RESET_ISSUE","FEEDBACK_SUBMIT_ISSUE","CONTACT_US","CONTACT_US_VIEW_RAISE_AHD_SECTION","CONTACT_US_VIEW_MAIL_US_SECTION","CONTACT_US_VIEW_TALK_TO_US_SECTION","CONTACT_US_RAISE_AHD","CONTACT_US_WRITE_EMAIL","CONTACT_US_DIAL_FROM_PHONE","FAQ","FAQ_VIEW_LOGIN_FAQS","FAQ_VIEW_ODC_ACCESS_FAQS","FAQ_VIEW_COMPATIBILITY_FAQS","FAQ_VIEW_INSTALLATION_FAQS","FAQ_VIEW_PROGRESS_COMPLETION_FAQS","FAQ_VIEW_VIDEO_FAQS","FAQ_VIEW_AUTHORING_FAQS","MOBILE_APPS","MOBILE_APPS_VIEW_ANDROID_APP_SECTION","MOBILE_APPS_DOWNLOAD_APP_FROM_PLAY_STORE","MOBILE_APPS_DOWNLOAD_APP_FROM_OUR_SERVER","MOBILE_APPS_VIEW_QR_CODE_FOR_ANDROID_APP","MOBILE_APPS_VIEW_IOS_APP_SECTION","MOBILE_APPS_DOWNLOAD_IOS_APP","MOBILE_APPS_VIEW_QR_CODE_FOR_IOS_APP","ABOUT_US","ABOUT_US_VIEW_ABOUT_US_PAGE_SECTIONS","SETTINGS","SETTINGS_VIEW_LANGUAGE_SECTION","SETTINGS_VIEW_FONT_SIZE_SECTION","SETTINGS_VIEW_THEME_SECTION","SETTINGS_CHANGE_LANGUAGE","SETTINGS_CHANGE_FONT_SIZE","SETTINGS_CHANGE_THEME","LOGIN_PAGE","LOGIN_PAGE_LOGIN_FOR_INFOSCIONS","LOGIN_PAGE_LOGIN_FOR_SUBSIDIARIES","LOGIN_PAGE_LOGIN_FOR_NEW_RECRUITS","LOGIN_PAGE_ABOUT_US","LOGIN_PAGE_TERMS_OF_USE","LOGIN_PAGE_FAQS","LOGIN_PAGE_CONTACT_US","TOC_PAGE","TOC_PAGE_VIEW_OVERVIEW_SECTION","TOC_PAGE_VIEW_INSTRUCTOR_LED_SECTION","TOC_PAGE_VIEW_COHORTS_SECTION","TOC_PAGE_VIEW_DISCUSSION_FORUM_SECTION","TOC_PAGE_VIEW_COURSE_ANALYTICS_SECTION","TOC_PAGE_VIEW_WHATS_NEXT_SECTION","TOC_PAGE_VIEW_PART_OF_SECTION","TOC_PAGE_REGISTER_FOR_UPCOMING_TRAINING","TOC_PAGE_UNREGISTER_FROM_REGISTERED_TRAINING","TOC_PAGE_SHARE_INSTRUCTOR_LED_TRAININGS","TOC_PAGE_VIEW_EDUCATORS_OF_TRAININGS","TOC_PAGE_NOMINATE_OTHERS_FOR_TRAININGS","TOC_PAGE_REQUEST_TRAINING","TOC_PAGE_VIEW_ACTIVE_LEARNERS_SECTION","TOC_PAGE_VIEW_ALL_ACTIVE_LEARNERS","TOC_PAGE_VIEW_CURRENTLY_ACTIVE_LEARNERS","TOC_PAGE_VIEW_LEARNERS_SHARING_THE_SAME_GOALS","TOC_PAGE_VIEW_EXPERTS_AND_TUTORS_SECTION","TOC_PAGE_VIEW_ALL_EXPERTS_AND_TUTORS","TOC_PAGE_VIEW_AUTHORS_OF_COURSE","TOC_PAGE_VIEW_EDUCATORS_OF_COURSE","TOC_PAGE_VIEW_TOPPERS_OF_COURSE","TOC_PAGE_MAIL_THE_PERSON","TOC_PAGE_CALL_THE_PERSON","TOC_PAGE_POST_VIEWS_IN_DISCUSSION_FORUM","TOC_PAGE_LEARN_THE_COURSE","TOC_PAGE_LIKE_THE_COURSE","TOC_PAGE_SHARE_THE_COURSE","TOC_PAGE_ADD_COURSE_TO_GOALS","TOC_PAGE_ADD_COURSE_TO_PLAYLIST","TOC_PAGE_ADD_COURSE_TO_WATCHLIST","TOC_PAGE_GIVE_COURSE_FEEDBACK","TOC_PAGE_RESUME_THE_COURSE","TOC_PAGE_START_OVER_THE_COURSE","TOC_PAGE_GO_TO_COURSE_QUIZ","TOC_PAGE_GO_TO_COURSE_HANDS_ON","NAVBAR","NAVBAR_VIEW_LOGO","NAVBAR_CATALOG_ICON","NAVBAR_NAVIGATOR_ICON","NAVBAR_NOTIFICATION_ICON","NAVBAR_SETTINGS_ICON","NAVBAR_SEARCH_ICON","NAVBAR_APPS_ICON","HOME_PAGE","HOME_PAGE_VIEW_CAROUSEL","HOME_PAGE_VIEW_CONTINUE_LEARNING_STRIP","HOME_PAGE_VIEW_FEATURED_APPS_STRIP","HOME_PAGE_VIEW_RECENT_ADDITION_TO_PLAYLISTS_STRIP","HOME_PAGE_VIEW_BASED_ON_YOUR_INTERESTS_STRIP","HOME_PAGE_VIEW_BASED_ON_WHAT_YOU_VIEWED_STRIP","HOME_PAGE_VIEW_LATEST_STRIP","HOME_PAGE_VIEW_TRENDING_STRIP","HOME_PAGE_SHOW_COMPLETED_FILTER","HOME_PAGE_SHOW_RESOURCES_FILTER","TNC_PAGE","TNC_PAGE_VIEW_CONTEST_RULES_SECTION","TNC_PAGE_VIEW_DATA_PRIVACY_SECTION","TNC_PAGE_ACCEPT_TERMS_AND_CONDITIONS","BLOGS","BLOG_VIEW_OTHERS_BLOGS","BLOGS_LIKE_OTHER_BLOGS","BLOGS_VIEW_MY_BLOGS","BLOGS_WRITE_NEW_BLOG","BLOGS_SAVE_BLOG_AS_DRAFT","BLOGS_EDIT_MY_SAVED_BLOG","BLOGS_PUBLISH_MY_BLOG","BLOGS_UPVOTE_FOR_BLOG","BLOGS_DOWNVOTE_FOR_BLOG","BLOGS_WRITE_RESPONSE_FOR_BLOG","BLOGS_DELETE_MY_BLOG","BLOGS_EDIT_MY_RESPONSE","BLOGS_DELETE_MY_RESPONSE","BLOGS_VIEW_DRAFTS_SECTION","BLOGS_VIEW_PUBLISHED_SECTION","QUESTION_AND_ANSWER","QUESTION_AND_ANSWER_VIEW_ALL_QUESTIONS_AND_ANSWERS","QUESTION_AND_ANSWER_VIEW_ONLY_UNANSWERED_QUESTIONS","QUESTION_AND_ANSWER_VIEW_MY_TIMELINE","QUESTION_AND_ANSWER_ASK_NEW_QUESTION","QUESTION_AND_ANSWER_VIEW_SPECIFIC_QUESTION","QUESTION_AND_ANSWER_UPVOTE_FOR_ANSWER","QUESTION_AND_ANSWER_DOWNVOTE_FOR_ANSWER","QUESTION_AND_ANSWER_LIKE_AN_ANSWER","QUESTION_AND_ANSWER_ADD_COMMENT_FOR_ANY_ANSWER","QUESTION_AND_ANSWER_ADD_ANSWER_FOR_ANY_QUESTION","QUESTION_AND_ANSWER_SAVE_QUESTION_AS_DRAFT","QUESTION_AND_ANSWER_PUBLISH_SAVED_QUESTION","QUESTION_AND_ANSWER_VIEW_DRAFTS_SECTION","QUESTION_AND_ANSWER_VIEW_PUBLISHED_SECTION","BADGES","BADGES_VIEW_RECENTLY_EARNED_BADGE","BADGES_VIEW_ALL_EARNED_BADGES","BADGES_VIEW_NEXT_TARGETTED_BADGES","HANDS_ON_DASHBOARD","HANDS_ON_DASHBOARD_VIEW_MY_DASHBOARD","HANDS_ON_DASHBOARD_VIEW_SHARED_PROFILE_SECTION","LEARNING_HISTORY","LEARNING_HISTORY_VIEW_PROGRAMS_SECTION","LEARNING_HISTORY_VIEW_COURSES_SECTION","LEARNING_HISTORY_VIEW_LEARNING_MODULES_SECTION","LEARNING_HISTORY_VIEW_RESOURCES_SECTION","LEARNING_HISTORY_VIEW_CERTIFICATIONS_SECTION","LEARNING_HISTORY_APPLY_COMPLETED_FILTER","LEARNING_HISTORY_VIEW_MORE_BUTTON","LEARNING_TIME","LEARNING_TIME_VIEW_LEARNING_TIME_GRAPH","LEARNING_TIME_APPLY_BAR_GRAPH_FILTER","LEARNING_TIME_APPLY_DATE_RANGE_FILTER","LEARNING_TIME_APPLY_TIME_SPENT_FILTER","LEARNING_TIME_APPLY_APP_AVERAGE_FILTER","LEARNING_TIME_APPLY_USER_AVERAGE_OVER_PERIOD_FILTER","NOTIFICATION","NOTIFICATION_VIEW_RECENT_BADGE_EARNED","NOTIFICATION_VIEW_SHARED_PLAYLIST","NOTIFICATION_VIEW_SHARED_GOALS","PROFILE","PROFILE_VIEW_BASIC_INFORMATION","PROFILE_VIEW_RECENTLY_LEARNED_COURSES","PROFILE_VIEW_LIKED_ITEMS","PROFILE_VIEW_BADGES_EARNED","BEHAVIORAL_SKILLS","BEHAVIORAL_SKILLS_VIEW_MODEL_CLIENT_INTERACTIONS","BEHAVIORAL_SKILLS_VIEW_CLIENT_INTERACTION_TESTS","CERTIFICATIONS","CERTIFICATIONS_VIEW_MY_APPROVALS_SECTION","CERTIFICATIONS_VIEW_MY_REQUESTS_SECTION","CERTIFICATIONS_VIEW_MY_CERTIFICATIONS_SECTION","CERTIFICATIONS_APPLY_COMPLETION_STATUS_FILTER","CODE_CRACK","CODE_CRACK_VIEW_PUZZLE_MANIA","CODE_CRACK_VIEW_CODE_CRACK","CODE_CRACK_VIEW_TECHNOLOGY_PLAYGROUND","CODE_CRACK_WATCH_PROGRAMMING_CHALLENGES_VIDEO","CODE_CRACK_VIEW_ACCELERATE","CODE_CRACK_START_CODE_CRACK_TEST","CODE_CRACK_START_PUZZLE_MANIA","CODE_CRACK_START_TECHNOLOGY_PLAYGROUND","INSTRUCTOR_LED_TRAINING","INSTRUCTOR_LED_TRAINING_VIEW_TRAINING_SCHEDULE_SECTION","INSTRUCTOR_LED_TRAINING_VIEW_FEEDBACK_SECTION","INSTRUCTOR_LED_TRAINING_VIEW_TRAININGS_PLANNED_BY_YOUR_TEAM_SECTION","INSTRUCTOR_LED_TRAINING_SEARCH_TRAINING","INSTRUCTOR_LED_TRAINING_REGISTER_FOR_TRAINING","INSTRUCTOR_LED_TRAINING_GIVE_TRAINING_FEEDBACK","LEADERBOARD","LEADERBOARD_VIEW_WEEKLY_SECTION","LEADERBOARD_VIEW_MONTHLY_SECTION","LEADERBOARD_VIEW_HALL_OF_FAME_SECTION","LEADERBOARD_APPLY_LEARNER_COLLABORATOR_FILTER","LEADERBOARD_BACK_DATE_BUTTON","LEADERBOARD_FORWARD_DATE_BUTTON","PLAYGROUND","PLAYGROUND_VIEW_TECHNOLOGY_PLAYGROUNDS_STRIP","PLAYGROUND_VIEW_ASSESSMENTS_PLAYGROUNDS_STRIP","PUZZLE_MANIA","PUZZLE_MANIA_VIEW_PUZZLE_MANIA","PUZZLE_MANIA_VIEW_CODE_CRACK","PUZZLE_MANIA_VIEW_TECHNOLOGY_PLAYGROUND","PUZZLE_MANIA_WATCH_PROGRAMMING_CHALLENGES_VIDEO","PUZZLE_MANIA_VIEW_ACCELERATE","PUZZLE_MANIA_START_CODE_CRACK_TEST","PUZZLE_MANIA_START_PUZZLE_MANIA","PUZZLE_MANIA_START_TECHNOLOGY_PLAYGROUND","FULL_STACK_SALES_LEADER","FULL_STACK_SALES_LEADER_WATCH_LEADER_VIDEO","FULL_STACK_SALES_LEADER_EMBARK_ON_THIS_LEARNING_JOURNEY_BUTTON","FULL_STACK_SALES_LEADER_QUICK_TOUR_VIDEO_LINK","FULL_STACK_SALES_LEADER_FEEDBACK_LINK","FULL_STACK_SALES_LEADER_DROP_NOTE_LINK","ONBOARDING","ONBOARDING_VIEW_DC_ONBOARDING_PROGRAMS_STRIP","ONBOARDING_VIEW_ORGANISATIONAL_ONBOARDING_PROGRAMS_STRIP","ONBOARDING_VIEW_ROLE_BASED_ONBOARDING_PROGRAMS_STRIP","ONBOARDING_VIEW_UNIT_AND_PROJECT_ONBOARDING_PROGRAMS_STRIP","SEARCH","SEARCH_SEARCHING_CONTENT","KNOWLEDGE_HUB","KNOWLEDGE_HUB_SUBMIT_KNOWLEDGE_ARTIFACTS","KNOWLEDGE_HUB_VIEW_TOP_PROJECTS_SECTION","KNOWLEDGE_HUB_VIEW_INTERESTING_READS_SECTION","KNOWLEDGE_HUB_VIEW_MARKETING_SECTION","KNOWLEDGE_HUB_VIEW_KSHOP_CLASSIC_SECTION","KNOWLEDGE_HUB_VIEW_TRENDING_TOOLS_SECTION","KNOWLEDGE_HUB_VIEW_DOCUMENTS_STRIP","KNOWLEDGE_HUB_VIEW_TOOLS_STRIP","KNOWLEDGE_HUB_VIEW_MARKETING_STRIP","CHANNELS","CHANNELS_VIEW_LEADERSHIP_SECTION","CHANNELS_VIEW_RAVI_KUMAR_PAGE","CHANNELS_VIEW_MOHIT_JOSHI_PAGE","CHANNELS_FOLLOW_RAVI_KUMAR","CHANNELS_MAIL_TO_RAVI_KUMAR","CHANNELS_VIEW_ABOUT_RAVI_KUMAR_SECTION","CHANNELS_VIEW_RAVI_KUMAR_TWEETS_SECTION","CHANNELS_VIEW_RAVI_KUMAR_ARTICLES_SECTION","CHANNELS_VIEW_RAVI_KUMAR_TRAILBLAZERS_SECTION","CHANNELS_VIEW_RAVI_KUMAR_COMMUNICATIONS_SECTION","CHANNELS_VIEW_RAVI_KUMAR_DISCUSSION_SECTION","CHANNELS_LIKE_TWEET_RAVI_KUMAR","CHANNELS_SHARE_TWEET_RAVI_KUMAR","CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_RAVI_KUMAR","CHANNELS_FOLLOW_MOHIT_JOSHI","CHANNELS_MAIL_TO_MOHIT_JOSHI","CHANNELS_VIEW_ABOUT_MOHIT_JOSHI_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_TWEETS_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_ARTICLES_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_TRAILBLAZERS_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_COMMUNICATIONS_SECTION","CHANNELS_VIEW_MOHIT_JOSHI_DISCUSSION_SECTION","CHANNELS_LIKE_TWEET_MOHIT_JOSHI","CHANNELS_SHARE_TWEET_MOHIT_JOSHI","CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_MOHIT_JOSHI","CHANNELS_VIEW_CORPORATE_SECTION","CHANNELS_VIEW_EXPERIENCE_WOW_PAGE","CHANNELS_VIEW_iGOT_KNOWLEDGE_INSTITUTE_PAGE","CHANNELS_VIEW_CMT_LEARNING_HUB_PAGE","CHANNELS_VIEW_FULL_STACK_SALES_LEADERS_PAGE","EXPERIENCE_WOW_PAGE","EXPERIENCE_WOW_PAGE_VIEW_PAGE_SECTIONS","EXPERIENCE_WOW_PAGE_CHECK_iGOT_STATISTICS","EXPERIENCE_WOW_PAGE_CHECK_iGOT_ME_STATISTICS","EXPERIENCE_WOW_PAGE_PROVIDE_SUGGESTIONS","EXPERIENCE_WOW_PAGE_SEND_MAIL_FOR_BECOMING_COCREATOR","iGOT_RADIO","iGOT_RADIO_VIEW_PODCASTS_STRIP","iGOT_TV","iGOT_TV_VIEW_JUST_FOR_YOU_SECTION","iGOT_TV_VIEW_MUST_VIEW_STRIP","iGOT_TV_VIEW_LATEST_STRIP","iGOT_TV_VIEW_CHANNELS_SECTION","iGOT_TV_VIEW_CHANNELS_STRIP","iGOT_TV_VIEW_BROADCAST_SECTION","iGOT_TV_VIEW_PREVIOUS_EVENTS_LIST","iGOT_TV_VIEW_LIVE_EVENTS_LIST","iGOT_TV_VIEW_UPCOMING_EVENTS_LIST","LEADERSHIP_MESSAGES","LEADERSHIP_MESSAGES_VIEW_LEADERSHIP_VIDEO","LIVING_LABS","LIVING_LABS_VIEW_LIVING_LABS_STRIP","AMERICAS_CONFLUENECE","AMERICAS_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS","APAC_CONFLUENECE","APAC_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS","EMEA_CONFLUENECE","EMEA_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS","CONNECT","CONNECT_VIEW_CONTENT_STRIP","LIVE_EVENTS","LIVE_EVENTS_WATCH_LIVE","LIVE_EVENTS_WATCH_CLASSROOM_BROADCAST","LIVE_EVENTS_WATCH_THREE_SIXTY_VIDEO","LIVE_EVENTS_WATCH_FAMILY_MATTERS_VIDEO","LIVE_EVENTS_WATCH_CONFLUENCE_EVENTS","DIGITAL_ASSISTANT_TOUR","DIGITAL_ASSISTANT_TOUR_WATCH_TOUR_VIDEO","QUICK_TOUR","QUICK_TOUR_WATCH_TOUR_VIDEO","LOGOUT","LOGOUT_LOGS_OUT_FROM_APPLICATION","MY_ANALYTICS","MY_ANALYTICS_APPLY_QUARTER_FILTERS","MY_ANALYTICS_VIEW_MY_LEARNING_SECTION","MY_ANALYTICS_VIEW_MY_ASSESSMENT_SECTION","MY_ANALYTICS_VIEW_MY_REFACTORING_SECTION","MY_ANALYTICS_VIEW_MY_PLANS_SECTION","MY_ANALYTICS_VIEW_MY_COLLABORATORS_SECTION","MY_ANALYTICS_VIEW_MY_FEATURES_USAGE_SECTION","MY_ANALYTICS_VIEW_MY_LEARNING_MINUTES","MY_ANALYTICS_VIEW_MY_LEARNING_POINTS","MY_ANALYTICS_VIEW_BADGES","MY_ANALYTICS_VIEW_TIME_SPENT_BY_USER","MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ON_iGOT","MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ACROSS_DIMENSIONS","MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_USER","MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_INFOSCIONS","MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_PEERS","MY_ANALYTICS_VIEW_TOTAL_ASSESSMENTS","MY_ANALYTICS_VIEW_PENDING_ASSESSMENTS","MY_ANALYTICS_VIEW_CERTIFICATIONS","MY_ANALYTICS_VIEW_ASSESSMENTS","MY_ANALYTICS_VIEW_RECENT_ASSESSMENTS","MY_ANALYTICS_VIEW_ASSESSMENT_DETAILS","MY_ANALYTICS_VIEW_RECENT_ASSESSMENT","MY_ANALYTICS_VIEW_MY_REFACTORING_PROGRAM","MY_ANALYTICS_VIEW_NAVIGATOR","MY_ANALYTICS_VIEW_AI_AND_AUTOMATION_PROGRESS","MY_ANALYTICS_VIEW_MY_GOALS","MY_ANALYTICS_VIEW_PLAYLIST","MY_ANALYTICS_VIEW_GOALS_SHARED_WITH_USER","MY_ANALYTICS_VIEW_DETAILED_COURSES_PROGRESS","MY_ANALYTICS_VIEW_GOALS_SHARED_BY_USER","MY_ANALYTICS_VIEW_ARTIFACTS_SHARED_BY_USER","MY_ANALYTICS_VIEW_EXPERTS_USER_CONTACTED","MY_ANALYTICS_VIEW_DETAILED_GOALS_SHARING","MY_ANALYTICS_VIEW_PLAYGROUNDS","MY_ANALYTICS_VIEW_LIKES","MY_ANALYTICS_VIEW_SEARCH","MY_ANALYTICS_VIEW_iGOT_TV","MY_ANALYTICS_VIEW_iGOT_RADIO","MY_ANALYTICS_VIEW_iGOT_LIVE","MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_UNIT","MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_PEERS","LEARNING_ANALYTICS","LEARNING_ANALYTICS_SEARCH_FOR_PARTICIPANTS_AND_EDUCATORS","LEARNING_ANALYTICS_UNIT_FILTER","LEARNING_ANALYTICS_PU_FILTER","LEARNING_ANALYTICS_DU_FILTER","LEARNING_ANALYTICS_ACCOUNT_FILTER","LEARNING_ANALYTICS_LOCATION_FILTER","LEARNING_ANALYTICS_QUARTER_FILTER","LEARNING_ANALYTICS_COMPLETED_FILTER","LEARNING_ANALYTICS_ETA_FILTER","LEARNING_ANALYTICS_UNIQUE_USERS_DATA","LEARNING_ANALYTICS_USERS_BY_ONSITE_OFFSHORE","LEARNING_ANALYTICS_USERS_BY_DEVICE_TYPE","LEARNING_ANALYTICS_USERS_BY_UNIT","LEARNING_ANALYTICS_USERS_BY_TRACK","LEARNING_ANALYTICS_USERS_BY_PU_SALES","LEARNING_ANALYTICS_USERS_BY_CU_TYPE","LEARNING_ANALYTICS_USERS_BY_SKILL","LEARNING_ANALYTICS_USERS_BY_TOPICS","LEARNING_ANALYTICS_USERS_BY_HORIZON","LEARNING_ANALYTICS_USERS_GROWTH","LEARNING_ANALYTICS_USERS_DETAILS","LEARNING_ANALYTICS_VIEW_ALL_TRAININGS_SECTION","LEARNING_ANALYTICS_TALENT_GRID_FILTER","LEARNING_ANALYTICS_STACK_FILTER","LEARNING_ANALYTICS_UNIQUE_PARTICIPANTS","LEARNING_ANALYTICS_OVERALL_PARTICIPANTS","LEARNING_ANALYTICS_AVERAGE_DAYS","LEARNING_ANALYTICS_PARTICIPANTS_BY_ONSITE_ONSHORE","LEARNING_ANALYTICS_PARTICIPANTS_BY_UNIT","LEARNING_ANALYTICS_PARTICIPANTS_BY_PU","LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL_TYPE","LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL","LEARNING_ANALYTICS_PARTICIPANTS_BY_STACKS","LEARNING_ANALYTICS_PARTICIPANTS_BY_NEW_SERVICES","LEARNING_ANALYTICS_PARTICIPANTS_BY_LEARNING_TRACK","LEARNING_ANALYTICS_PARTICIPANTS_BY_OFFERING_MODE","LEARNING_ANALYTICS_PARTICIPANTS_BY_TOPICS","LEARNING_ANALYTICS_PARTICIPANTS_BY_ABCD","LEARNING_ANALYTICS_PARTICIPANTS_DETAILS","LEARNING_ANALYTICS_SCHEDULES_SECTION","LEARNING_ANALYTICS_SCHEDULE_DATE_FILTER","LEARNING_ANALYTICS_PARTICIPANTS","LEARNING_ANALYTICS_EDUCATORS","LEARNING_ANALYTICS_COURSES","LEARNING_ANALYTICS_SCHEDULES","LEARNING_ANALYTICS_VIEW_TRAINING_SCHEDULES_SECTION","LEARNING_ANALYTICS_COURSES_BY_OFFERING_MODE","LEARNING_ANALYTICS_COURSES_BY_TRACK","LEARNING_ANALYTICS_COURSES_BY_TOPIC","LEARNING_ANALYTICS_COURSES_BY_ABCD","LEARNING_ANALYTICS_COURSES_BY_SKILL","APPS_PAGE","APPS_PAGE_VIEW_DIFFERENT_APPS_ICONS","COURSE_CARD","COURSE_CARD_LIKE_THE_COURSE_BUTTON","COURSE_CARD_SHARE_THE_COURSE_BUTTON","COURSE_CARD_ADD_COURSE_TO_GOALS_BUTTON","COURSE_CARD_ADD_COURSE_TO_PLAYLIST_BUTTON","COURSE_CARD_VIEW_MORE_OPTIONS_BUTTON","COURSE_CARD_START_COURSE_OPTION","COURSE_CARD_VIEW_TOC_OPTION","COURSE_CARD_COHORTS_OPTION","COURSE_CARD_ANALYTICS_OPTION","SEARCH_RESULTS_PAGE","SEARCH_RESULTS_PAGE_VIEW_LEARNING_SECTION","SEARCH_RESULTS_PAGE_VIEW_CERTIFICATIONS_SECTION","SEARCH_RESULTS_PAGE_VIEW_KNOWLEDGE_SECTION","SEARCH_RESULTS_PAGE_VIEW_PROJECTS_SECTION","SEARCH_RESULTS_PAGE_VIEW_SOCIAL_SECTION","SEARCH_RESULTS_PAGE_CATALOG_FILTER","SEARCH_RESULTS_PAGE_DURATION_FILTER","SEARCH_RESULTS_PAGE_CONTENT_TYPE_FILTER","SEARCH_RESULTS_PAGE_LEVEL_FILTER","SEARCH_RESULTS_PAGE_SOURCE_FILTER","SEARCH_RESULTS_PAGE_UNIT_FILTER","SEARCH_RESULTS_PAGE_TYPE_FILTER","SEARCH_RESULTS_PAGE_PUBLISHED_DATE_FILTER","SEARCH_RESULTS_PAGE_CATEGORY_FILTER","SEARCH_RESULTS_PAGE_ITEM_TYPE_FILTER","SEARCH_RESULTS_PAGE_TOPICS_FILTER","SEARCH_RESULTS_PAGE_AUTHORS_FILTER","SEARCH_RESULTS_PAGE_TAGS_FILTER","SEARCH_RESULTS_PAGE_GROUPS_FILTER","SEARCH_RESULTS_PAGE_VIEW_RESULT_CARDS","SEARCH_RESULTS_PAGE_VIEW_RELATED_CONCEPTS","LAB_42_INTERVIEW","LAB_42_DIALOGUE","LAB_42_STRATEGY_MAP","LAB_42_VIRTUAL_CLASSROOM","LAB_42_PROJECT_STACK","LAB_42_LIVE_TRANSCRIBE","LAB_42_EPOCH","LEARNING_ASSISTANT_MAQ","LEARNING_ASSISTANT_ILIPDP","INSTANCE","entries"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core'\nimport { NSProfileDataV3 } from '../models/profile-v3.models'\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs'\n// import { environment } from '../../../../../../src/environments/environment'\nimport { NsPage } from '../resolvers/page.model'\nimport { NsAppsConfig, NsInstanceConfig, NsUser } from './configurations.model'\nimport { IPortalUrls, IUserPreference } from './user-preference.model'\n\n// const instanceConfigPath: string | null = window.location.host\n// const locationHost: string | null = window.location.host\n\n// if (!environment.production && Boolean(environment.sitePath)) {\n// locationHost = environment.sitePath\n// instanceConfigPath = environment.sitePath\n// }\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigurationsService {\n // update as the single source of truth\n constructor() {\n // @Inject('env') env: any\n // if (!env.production && Boolean(env.sitePath)) {\n // locationHost = env.sitePath\n // instanceConfigPath = env.sitePath\n // }\n }\n appSetup = true\n // The url the user tried to access while landing in the app before accepting tnc\n userUrl = ''\n baseUrl = `assets/configurations`\n sitePath = `assets/configurations`\n hostPath = (window.location.host).replace(':', '_')\n\n userRoles: Set<string> | null = null\n userGroups: Set<string> | null = null\n restrictedFeatures: Set<string> | null = null\n restrictedWidgets: Set<string> | null = null\n instanceConfig: NsInstanceConfig.IConfig | null = null\n appsConfig: NsAppsConfig.IAppsConfig | null = null\n rootOrg: string | null = null\n courseContentPath?: string\n org: string[] | null = null\n activeOrg: string | null = ''\n isProduction = false\n hasAcceptedTnc = false\n profileDetailsStatus = false\n isActive = true\n userPreference: IUserPreference | null = null\n userProfile: NsUser.IUserProfile | null = null\n userProfileV2: NsUser.IUserProfile | null = null\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null\n // created to store complete user details sent by pid\n unMappedUser: any\n isAuthenticated = false\n isNewUser = false\n portalUrls: IPortalUrls | undefined\n positions: any\n overrideThemeChanges: any\n profileTimelyNudges: any\n\n // pinnedApps\n pinnedApps = new BehaviorSubject<Set<string>>(new Set())\n\n // Notifier\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1)\n tourGuideNotifier = new ReplaySubject<boolean>()\n authChangeNotifier = new ReplaySubject<boolean>(1)\n\n private updateProfile = new BehaviorSubject(false)\n updateProfileObservable = this.updateProfile.asObservable()\n\n updateTourGuide = new BehaviorSubject(true)\n updateTourGuideObservable = this.updateTourGuide.asObservable()\n\n // platform rating\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' })\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable()\n\n languageTranslationFlag = new Subject()\n\n // Preference Related Values\n activeThemeObject: NsInstanceConfig.ITheme | null = null\n activeFontObject: NsInstanceConfig.IFontSize | null = null\n isDarkMode = false\n isIntranetAllowed = false\n isRTL = false\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null\n activeLocaleGroup = ''\n completedActivity: string[] | null = null\n completedTour = false\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints']\n\n primaryNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n }\n pageNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n }\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null\n /* for temp Fix */\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\n // ':',\n // '_',\n // )}`\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null\n compentency: any = null\n\n // variable setting for csJwtToken\n cstoken = ''\n\n changeNavBarFullView = new Subject()\n openExploreMenuForMWeb = new Subject()\n updateGlobalProfile(state: boolean) {\n this.updateProfile.next(state)\n }\n\n updateTourGuideMethod(state: boolean) {\n this.updateTourGuide.next(state)\n }\n\n updatePlatformRatingMethod(state: any) {\n this.updatePlatformRating.next(state)\n }\n\n}\n","import { Injectable } from '@angular/core'\r\nimport { Observable } from 'rxjs'\r\nimport { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout'\r\nimport { map } from 'rxjs/operators'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ValueService {\r\n\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) { }\r\n\r\n public isXSmall$: Observable<boolean> = this.breakpointObserver\r\n .observe([Breakpoints.XSmall])\r\n .pipe(map((res: BreakpointState) => res.matches))\r\n public isLtMedium$: Observable<boolean> = this.breakpointObserver\r\n .observe([Breakpoints.XSmall, Breakpoints.Small])\r\n .pipe(map((res: BreakpointState) => res.matches))\r\n\r\n}\r\n","import { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core'\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'\r\nimport { MatSnackBar } from '@angular/material/snack-bar'\r\n\r\nimport { ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper'\r\nimport { ConfigurationsService } from '../../services/configurations.service'\r\nimport { ValueService } from '../../services/value.service'\r\nexport interface IDialogueDta {\r\n isRoundCrop: boolean,\r\n imageFile: File,\r\n height: number,\r\n width: number,\r\n imageFileName: string\r\n}\r\n@Component({\r\n selector: 'ws-utils-image-crop',\r\n templateUrl: './image-crop.component.html',\r\n styleUrls: ['./image-crop.component.scss'],\r\n})\r\nexport class ImageCropComponent implements OnInit {\r\n // need to set for creator Logo\r\n @Output() data = new EventEmitter<File>()\r\n isRoundCrop = false\r\n isNotOfRequiredSize = false\r\n imageFile!: File\r\n cropimageFile!: File\r\n imageFileBase64: any = ''\r\n width: any = ''\r\n height: any = ''\r\n opHeight: any\r\n opWidth: any\r\n imageDimensions: any = ''\r\n croppedHeight: any = ''\r\n croppedWidth: any = ''\r\n cropperReadyToStart: any = false\r\n fileName = ''\r\n canvasRotation = 0\r\n transform: ImageTransform = {}\r\n resetValue = false\r\n element: any\r\n isXSmall = false\r\n isThumbnail = true\r\n\r\n constructor(\r\n private dialogRef: MatDialogRef<ImageCropComponent>,\r\n private configSvc: ConfigurationsService,\r\n private snackBar: MatSnackBar,\r\n private valueSvc: ValueService,\r\n @Inject(MAT_DIALOG_DATA) data: IDialogueDta\r\n ) {\r\n this.isRoundCrop = data.isRoundCrop\r\n if (data.imageFile) {\r\n this.imageFile = data.imageFile\r\n }\r\n if (data.imageFileName) {\r\n this.fileName = data.imageFileName\r\n }\r\n if (!data.isRoundCrop) {\r\n if (data.height) {\r\n this.opHeight = data.height\r\n }\r\n if (data.width) {\r\n this.opWidth = data.width\r\n }\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.thumbnailSizeDetection()\r\n this.valueSvc.isXSmall$.subscribe((isXSmall: boolean) => {\r\n this.isXSmall = isXSmall\r\n if (this.isXSmall) {\r\n this.dialogRef.updateSize('90%')\r\n } else {\r\n this.dialogRef.updateSize('70%')\r\n }\r\n })\r\n\r\n }\r\n\r\n // displays the default image\r\n changeToDefaultImg($event: any) {\r\n $event.target.src = this.configSvc.instanceConfig ?\r\n this.configSvc.instanceConfig.logos.defaultContent : ''\r\n }\r\n\r\n // image cropping event\r\n imageCropped(event: ImageCroppedEvent) {\r\n\r\n this.imageFileBase64 = event.base64 // store the cropped image as a base64 value\r\n this.cropimageFile = this.base64ImageToBlob(this.imageFileBase64) // convert the cropped image as a file\r\n this.croppedHeight = event.height\r\n this.croppedWidth = event.width\r\n\r\n }\r\n\r\n openSnackBar(message: string) {\r\n this.snackBar.open(message, 'X', {\r\n duration: 2000,\r\n })\r\n }\r\n continueToImageCrop() {\r\n this.isNotOfRequiredSize = false\r\n }\r\n\r\n // checks if the image is of the correct dimensions\r\n thumbnailSizeDetection() {\r\n const fr = new FileReader()\r\n fr.readAsDataURL(this.imageFile)\r\n fr.onload = () => { // when file has loaded\r\n const img = new Image()\r\n img.src = fr.result as string\r\n img.onload = () => {\r\n this.width = img.width\r\n this.height = img.height\r\n if (!this.isRoundCrop) {\r\n if ((this.height === this.opHeight) && (this.width === this.opWidth)) {\r\n this.openSnackBar('Image is of the required dimensions of the thumbnail, croping is not available!')\r\n return\r\n }\r\n if ((this.height < this.opHeight) || (this.width < this.opWidth)) {\r\n this.isNotOfRequiredSize = true\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n base64ImageToBlob(str: string): File {\r\n // extract content type and base64 payload from original string\r\n\r\n const pos = str.indexOf(';base64,')\r\n // var type = str.substring(5, pos);\r\n const b64 = str.substr(pos + 8)\r\n // decode base64\r\n const imageContent = atob(b64)\r\n // create an ArrayBuffer and a view (as unsigned 8-bit)\r\n const buffer = new ArrayBuffer(imageContent.length)\r\n const view = new Uint8Array(buffer)\r\n // fill the view, using the decoded base64\r\n for (let n = 0; n < imageContent.length; n = n + 1) {\r\n view[n] = imageContent.charCodeAt(n)\r\n }\r\n // convert ArrayBuffer to Blob\r\n const blob = new Blob([view], { type: 'image/png' })\r\n const b: any = blob\r\n // Cast to a File() type\r\n b.lastModifiedDate = new Date()\r\n b.name = this.fileName\r\n const file = new File([blob], this.fileName, { type: 'image/jpeg' })\r\n return file\r\n\r\n }\r\n\r\n private flipAfterRotate() {\r\n const flippedH = this.transform.flipH\r\n const flippedV = this.transform.flipV\r\n this.transform = {\r\n ...this.transform,\r\n flipH: flippedV,\r\n flipV: flippedH,\r\n }\r\n }\r\n\r\n rotateLeft() {\r\n this.canvasRotation = this.canvasRotation - 1\r\n this.flipAfterRotate()\r\n }\r\n\r\n rotateRight() {\r\n this.canvasRotation = this.canvasRotation + 1\r\n this.flipAfterRotate()\r\n }\r\n\r\n flipHorizontal() {\r\n this.transform = {\r\n ...this.transform,\r\n flipH: !this.transform.flipH,\r\n }\r\n }\r\n\r\n zoom(event: any) {\r\n this.resetValue = false\r\n this.transform = {\r\n ...this.transform,\r\n scale: event.value,\r\n }\r\n }\r\n\r\n // calls when apply button is clicked,and returns the cropped image\r\n croppingImage() {\r\n this.dialogRef.close(this.cropimageFile)\r\n }\r\n\r\n reset() {\r\n this.resetValue = true\r\n this.canvasRotation = 0\r\n this.transform = {}\r\n }\r\n // closes the dialog box\r\n close(): void {\r\n this.dialogRef.close()\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common'\r\nimport { NgModule } from '@angular/core'\r\nimport {\r\n MatButtonModule,\r\n MatCardModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatSliderModule,\r\n} from '@angular/material'\r\nimport { ImageCropperModule } from 'ngx-image-cropper'\r\nimport { ImageCropComponent } from './image-crop.component'\r\n// @dynamic\r\n@NgModule({\r\n declarations: [ImageCropComponent],\r\n imports: [\r\n CommonModule,\r\n ImageCropperModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatToolbarModule,\r\n MatDialogModule,\r\n MatCardModule,\r\n MatTooltipModule,\r\n MatSliderModule,\r\n ],\r\n exports: [ImageCropComponent],\r\n entryComponents: [ImageCropComponent],\r\n})\r\nexport class ImageCropModule { }\r\n","import { Directive, Input, OnInit, HostBinding, OnDestroy, AfterViewInit } from '@angular/core'\r\nimport { Subscription, fromEvent } from 'rxjs'\r\nimport { debounceTime } from 'rxjs/operators'\r\n\r\nenum ScrollingStateEnum {\r\n ScrollingUp,\r\n ScrollingDown,\r\n NoScrolling,\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsClassChangeOnScroll]',\r\n})\r\nexport class ClassChangeOnScrollDirective implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() wsClassOnScrollDirChange = 5000\r\n\r\n @HostBinding('class.scrolling-down') get isScrollingDown() {\r\n return this.currState === ScrollingStateEnum.ScrollingDown\r\n }\r\n @HostBinding('class.scrolling-up') get isScrollingUp() {\r\n return this.currState === ScrollingStateEnum.ScrollingUp\r\n }\r\n @HostBinding('class.scrolling-no') get isNotScrolling() {\r\n return this.currState === ScrollingStateEnum.NoScrolling\r\n }\r\n @HostBinding('class.scrolled-down') hasScrolledDown = false\r\n\r\n private windowScrollSubscription: Subscription | null = null\r\n private timeoutTimer: any\r\n\r\n private lastScreenTop = 0\r\n private currState: ScrollingStateEnum = ScrollingStateEnum.NoScrolling\r\n constructor() { }\r\n ngOnInit() {\r\n this.windowScrollSubscription = fromEvent<Event>(window, 'scroll')\r\n .pipe(debounceTime(50))\r\n .subscribe(() => {\r\n clearTimeout(this.timeoutTimer)\r\n const curr = window.scrollY\r\n this.hasScrolledDown = curr > 56\r\n this.setScrollState(this.lastScreenTop, curr)\r\n this.lastScreenTop = curr\r\n })\r\n }\r\n\r\n ngAfterViewInit() { }\r\n ngOnDestroy() {\r\n if (this.windowScrollSubscription) {\r\n this.windowScrollSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setScrollState(prev: number = 0, curr: number = 0) {\r\n if (prev > curr) {\r\n this.currState = ScrollingStateEnum.ScrollingUp\r\n } else if (prev < curr) {\r\n this.currState = ScrollingStateEnum.ScrollingDown\r\n } else {\r\n this.currState = ScrollingStateEnum.NoScrolling\r\n }\r\n if (this.currState !== ScrollingStateEnum.NoScrolling) {\r\n this.resetScrollingState()\r\n }\r\n }\r\n private resetScrollingState() {\r\n this.timeoutTimer = setTimeout(\r\n () => {\r\n this.setScrollState()\r\n },\r\n this.wsClassOnScrollDirChange || 5000,\r\n )\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ClassChangeOnScrollDirective } from './class-change-on-scroll.directive'\r\n\r\n@NgModule({\r\n declarations: [ClassChangeOnScrollDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ClassChangeOnScrollDirective],\r\n})\r\nexport class ClassChangeOnScrollModule { }\r\n","import { Directive, Input, HostListener, HostBinding, OnChanges } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsDefaultThumbnail]',\r\n})\r\nexport class DefaultThumbnailDirective implements OnChanges {\r\n\r\n @Input() wsUtilsDefaultThumbnail = ''\r\n @Input() src = ''\r\n isSrcUpdateAttemptedForDefault = false\r\n\r\n @HostBinding('src') srcUrl = ''\r\n @HostListener('error') updateSrc() {\r\n if (!this.isSrcUpdateAttemptedForDefault) {\r\n this.srcUrl = this.wsUtilsDefaultThumbnail\r\n this.isSrcUpdateAttemptedForDefault = true\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.srcUrl = this.src\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DefaultThumbnailDirective } from './default-thumbnail.directive'\r\n\r\n@NgModule({\r\n declarations: [DefaultThumbnailDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [DefaultThumbnailDirective],\r\n})\r\nexport class DefaultThumbnailModule { }\r\n","import { BreakpointObserver } from '@angular/cdk/layout'\r\nimport { Directive, HostBinding, Input, OnChanges, OnDestroy } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { distinctUntilChanged } from 'rxjs/operators'\r\n\r\nexport interface IImageResponsiveUnit {\r\n [key: string]: string\r\n}\r\n\r\nconst customBreakPoints = {\r\n xs: '(max-width: 450px)',\r\n s: '(min-width: 450.001px) and (max-width: 768px)',\r\n m: '(min-width: 768.001px) and (max-width: 1024px)',\r\n l: '(min-width: 1024.001px) and (max-width: 1400px)',\r\n xl: '(min-width: 1400.001px) and (max-width: 1920px)',\r\n xxl: '(min-width: 1920.001px)',\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsImageResponsive]',\r\n})\r\nexport class ImageResponsiveDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() src: IImageResponsiveUnit | null = null\r\n @HostBinding('src') srcBindUrl = ''\r\n\r\n currentSize = ''\r\n breakpointSubscription: Subscription | null = null\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) {\r\n this.breakpointSubscription = this.breakpointObserver\r\n .observe([\r\n customBreakPoints.xs,\r\n customBreakPoints.s,\r\n customBreakPoints.m,\r\n customBreakPoints.l,\r\n customBreakPoints.xl,\r\n customBreakPoints.xxl,\r\n ])\r\n .pipe(distinctUntilChanged())\r\n .subscribe(data => {\r\n // //console.log('data >', data)\r\n if (data.breakpoints[customBreakPoints.xxl]) {\r\n this.currentSize = 'xxl'\r\n } else if (data.breakpoints[customBreakPoints.xl]) {\r\n this.currentSize = 'xl'\r\n } else if (data.breakpoints[customBreakPoints.l]) {\r\n this.currentSize = 'l'\r\n } else if (data.breakpoints[customBreakPoints.m]) {\r\n this.currentSize = 'm'\r\n } else if (data.breakpoints[customBreakPoints.s]) {\r\n this.currentSize = 's'\r\n } else if (data.breakpoints[customBreakPoints.xs]) {\r\n this.currentSize = 'xs'\r\n } else {\r\n this.currentSize = 'xl'\r\n }\r\n this.setSrc()\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.setSrc()\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.breakpointSubscription) {\r\n this.breakpointSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setSrc() {\r\n if (\r\n this.currentSize &&\r\n this.src &&\r\n this.src[this.currentSize]\r\n ) {\r\n this.srcBindUrl = this.src[this.currentSize]\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ImageResponsiveDirective } from './image-responsive.directive'\r\n\r\n@NgModule({\r\n declarations: [ImageResponsiveDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ImageResponsiveDirective],\r\n})\r\nexport class ImageResponsiveModule { }\r\n","import { Directive, OnInit, Output, EventEmitter, ElementRef, OnDestroy } from '@angular/core'\r\nimport { fromEvent } from 'rxjs'\r\nimport { debounceTime } from 'rxjs/operators'\r\n\r\n@Directive({\r\n selector: '[wsUtilsInViewPort]',\r\n})\r\nexport class InViewPortDirective implements OnInit, OnDestroy {\r\n\r\n private scroll: any\r\n private resize: any\r\n\r\n @Output() inViewport: EventEmitter<boolean> = new EventEmitter<boolean>()\r\n\r\n constructor(private _el: ElementRef) { }\r\n\r\n ngOnInit() {\r\n this.check()\r\n this.scroll =\r\n fromEvent(window, 'scroll').pipe(debounceTime(100)).subscribe(() => {\r\n this.check()\r\n })\r\n this.resize =\r\n fromEvent(window, 'resize').pipe(debounceTime(100)).subscribe(() => {\r\n this.check()\r\n })\r\n\r\n // let limit = 1\r\n // this.scroll =\r\n // fromEvent(window, 'scroll').pipe(debounceTime(100)).subscribe(() => {\r\n // if (limit) {\r\n // this.check()\r\n // limit -= 1\r\n // }\r\n // })\r\n\r\n // this.resize =\r\n // fromEvent(window, 'resize').toPromise().then(() => {\r\n // this.check()\r\n // })\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.scroll.unsubscribe()\r\n this.resize.unsubscribe()\r\n }\r\n\r\n check(partial: boolean = true, direction: string = 'both') {\r\n const el = this._el.nativeElement\r\n\r\n const elSize = (el.offsetWidth * el.offsetHeight)\r\n\r\n const rec = el.getBoundingClientRect()\r\n\r\n const vp = {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n }\r\n\r\n const tViz = rec.top >= 0 && rec.top < vp.height\r\n const bViz = rec.bottom > 0 && rec.bottom <= vp.height\r\n\r\n const lViz = rec.left >= 0 && rec.left < vp.width\r\n const rViz = rec.right > 0 && rec.right <= vp.width\r\n\r\n const vVisible = partial ? tViz || bViz : tViz && bViz\r\n const hVisible = partial ? lViz || rViz : lViz && rViz\r\n\r\n let event = false\r\n\r\n if (direction === 'both') {\r\n event = (elSize && vVisible && hVisible) ? true : false\r\n } else if (direction === 'vertical') {\r\n event = (elSize && vVisible) ? true : false\r\n } else if (direction === 'horizontal') {\r\n event = (elSize && hVisible) ? true : false\r\n }\r\n this.inViewport.emit(event)\r\n }\r\n}\r\n","import { InViewPortDirective } from './in-view-port.directive'\r\nimport { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\n\r\n@NgModule({\r\n declarations: [InViewPortDirective],\r\n exports: [InViewPortDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n})\r\nexport class InViewPortModule { }\r\n","import { Directive, OnChanges, Input, HostBinding, HostListener } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsNavigation]',\r\n})\r\nexport class NavigationDirective implements OnChanges {\r\n @Input() wsUtilsNavigation = ''\r\n @Input() openInNewTab = false\r\n @Input()\r\n @HostBinding('attr.routerLink') routeUrl = ''\r\n @HostListener('mousedown', ['$event']) onMouseEnter($event: Event) {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n $event.preventDefault()\r\n $event.stopPropagation()\r\n this.routeUrl = './'\r\n window.open(this.wsUtilsNavigation)\r\n }\r\n }\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n this.routeUrl = './'\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NavigationDirective } from './navigation.directive'\r\n\r\n@NgModule({\r\n declarations: [NavigationDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [NavigationDirective],\r\n})\r\nexport class NavigationModule { }\r\n","import { Directive } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsPermission]',\r\n})\r\nexport class PermissionDirective {\r\n\r\n constructor() { }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PermissionDirective } from './permission.directive'\r\n\r\n@NgModule({\r\n declarations: [PermissionDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PermissionDirective],\r\n})\r\nexport class PermissionModule { }\r\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core'\r\nimport {\r\n fromEvent,\r\n Subscription,\r\n timer,\r\n} from 'rxjs'\r\nimport { debounceTime, throttleTime } from 'rxjs/operators'\r\nimport { TFetchStatus } from '../../constants/misc.constants'\r\n\r\n@Component({\r\n selector: 'ws-utils-horizontal-scroller',\r\n templateUrl: './horizontal-scroller.component.html',\r\n styleUrls: ['./horizontal-scroller.component.scss'],\r\n})\r\nexport class HorizontalScrollerComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input()\r\n loadStatus: TFetchStatus = 'none'\r\n @Input()\r\n onHover = false\r\n @Output()\r\n loadNext = new EventEmitter()\r\n @ViewChild('horizontalScrollElem', { static: true })\r\n horizontalScrollElem: ElementRef | null = null\r\n\r\n enablePrev = false\r\n enableNext = false\r\n private scrollObserver: Subscription | null = null\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.horizontalScrollElem) {\r\n const horizontalScrollElem = this.horizontalScrollElem\r\n this.scrollObserver = fromEvent(\r\n horizontalScrollElem.nativeElement,\r\n 'scroll',\r\n )\r\n .pipe(debounceTime(100), throttleTime(100))\r\n .subscribe(_ => {\r\n this.updateNavigationBtnStatus(horizontalScrollElem\r\n .nativeElement as HTMLElement)\r\n })\r\n }\r\n }\r\n ngOnChanges() {\r\n timer(100).subscribe(() => {\r\n if (this.horizontalScrollElem) {\r\n this.updateNavigationBtnStatus(this.horizontalScrollElem\r\n .nativeElement as HTMLElement)\r\n }\r\n })\r\n }\r\n ngOnDestroy() {\r\n if (this.scrollObserver) {\r\n this.scrollObserver.unsubscribe()\r\n }\r\n }\r\n showPrev() {\r\n if (this.horizontalScrollElem) {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft -= 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\r\n behavior: 'smooth',\r\n })\r\n }\r\n }\r\n }\r\n showNext() {\r\n if (this.horizontalScrollElem) {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft += 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\r\n behavior: 'smooth',\r\n })\r\n }\r\n }\r\n }\r\n private updateNavigationBtnStatus(elem: HTMLElement) {\r\n this.enablePrev = true\r\n this.enableNext = true\r\n if (elem.scrollLeft === 0) {\r\n this.enablePrev = false\r\n }\r\n if (elem.scrollWidth === elem.clientWidth + elem.scrollLeft) {\r\n if (this.loadStatus === 'hasMore') {\r\n this.loadNext.emit()\r\n } else {\r\n this.enableNext = false\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { HorizontalScrollerComponent } from './horizontal-scroller.component'\r\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material'\r\n\r\n@NgModule({\r\n declarations: [HorizontalScrollerComponent],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n exports: [HorizontalScrollerComponent],\r\n})\r\nexport class HorizontalScrollerModule { }\r\n","export namespace WsEvents {\r\n export interface IWsEventsFromWidget {\r\n type: 'widget'\r\n widgetType: string\r\n widgetSubType: string\r\n }\r\n export interface IWsEventsFromPage {\r\n type: 'page'\r\n pageUrl: string\r\n pageType: string\r\n }\r\n export enum WsEventType {\r\n Action = 'Action',\r\n Telemetry = 'Telemetry',\r\n PageNavigation = 'PageNavigation',\r\n AccessRestrictedContentAccessed = 'AccessRestrictedContentAccessed',\r\n PageSlow = 'PageSlow',\r\n ErrorOccurred = 'ErrorOccurred',\r\n WidgetResolveError = 'WidgetResolveError',\r\n }\r\n export enum WsEventLogLevel {\r\n Warn = 'Warn',\r\n Error = 'Error',\r\n Info = 'Info',\r\n Log = 'Log',\r\n Trace = 'Trace',\r\n }\r\n export enum WsAuditTypes {\r\n Created = 'Created',\r\n Updated = 'Updated',\r\n Deleted = 'Deleted',\r\n }\r\n export enum WsTimeSpentType {\r\n Page = 'Page',\r\n Player = 'Player',\r\n }\r\n export enum WsTimeSpentMode {\r\n Play = 'Play',\r\n View = 'View',\r\n }\r\n export enum externalTelemetrypdata {\r\n RBCP = 'rbcp-web-ui',\r\n }\r\n\r\n export interface IWsEvents<T> {\r\n eventType: WsEventType\r\n eventLogLevel: WsEventLogLevel\r\n from: IWsEventsFromWidget | IWsEventsFromPage | string\r\n to: string\r\n data: T\r\n passThroughData?: any\r\n pageContext?: any\r\n }\r\n\r\n export enum EnumTelemetrySubType {\r\n Init = 'Init',\r\n Interact = 'Interact',\r\n Loaded = 'Loaded',\r\n Unloaded = 'Unloaded',\r\n StateChange = 'StateChange',\r\n HeartBeat = 'HeartBeat',\r\n Search = 'Search',\r\n Feedback = 'Feedback',\r\n Impression = 'Impression',\r\n Chatbot = 'Chatbot',\r\n GetStarted = 'Get Started',\r\n PlatformRating = 'PlatformRating',\r\n }\r\n\r\n export interface ITelemetryPageContext {\r\n pageId?: string,\r\n module?: string,\r\n pageIdExt?: string\r\n }\r\n\r\n export interface ITelemetryEdata {\r\n type: string\r\n subType?: string\r\n id?: string\r\n pageid?: string\r\n }\r\n\r\n export interface ITelemetryTabData {\r\n label: string,\r\n index: number,\r\n }\r\n\r\n export interface IWsEventTelemetry {\r\n eventSubType: EnumTelemetrySubType\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n // PDF Telemetry Event\r\n export enum EnumTelemetryPdfActivity {\r\n PAGE_CHANGED = 'PAGE_CHANGED',\r\n FULLSCREEN_ACTIVATED = 'FULLSCREEN_ACTIVATED',\r\n FULLSCREEN_DEACTIVATED = 'FULLSCREEN_DEACTIVATED',\r\n ZOOM_CHANGE = 'ZOOM_CHANGE',\r\n NONE = 'NONE',\r\n }\r\n export interface IWsEventTelemetryPdfData extends IWsEventTelemetry {\r\n activityType: EnumTelemetryPdfActivity\r\n currentPage: number\r\n totalPage: number\r\n activityStartedAt: Date | null\r\n object: any\r\n }\r\n\r\n export interface IWsEventTelemetrySurveyData extends IWsEventTelemetry {\r\n object: any\r\n }\r\n export type WsEventTelemetryPDF = IWsEvents<IWsEventTelemetryPdfData>\r\n export type WsEventTelemetrySurvey = IWsEvents<IWsEventTelemetrySurveyData>\r\n\r\n // Interact Telemetry Event\r\n export interface IWsEventTelemetryInteract extends IWsEventTelemetry {\r\n edata: ITelemetryEdata\r\n object: any\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n export interface IWsEventTelemetryFeedback extends IWsEventTelemetry {\r\n edata: ITelemetryEdata\r\n object: any\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n export interface IWsEventTelemetryImpression extends IWsEventTelemetry {\r\n edata?: ITelemetryEdata\r\n object?: any\r\n pageContext?: ITelemetryPageContext\r\n }\r\n\r\n export interface IWsEventTelemetrySearch extends IWsEventTelemetry {\r\n type: string\r\n subType?: string\r\n query?: string\r\n filters?: string\r\n size?: number\r\n locale?: any\r\n }\r\n export interface IWsEventTelemetryHeartBeat extends IWsEventTelemetry {\r\n type: string\r\n // subType?: string\r\n // mode: string\r\n id: string\r\n // mimeType: string\r\n }\r\n export type WsEventTelemetryInteract = IWsEvents<IWsEventTelemetryInteract>\r\n export type WsEventTelemetryFeedback = IWsEvents<IWsEventTelemetryFeedback>\r\n export type WsEventTelemetryImpression = IWsEvents<IWsEventTelemetryImpression>\r\n export type WsEventTelemetrySearch = IWsEvents<IWsEventTelemetrySearch>\r\n export type WsEventTelemetryHeartBeat = IWsEvents<IWsEventTelemetryHeartBeat>\r\n\r\n // Multimedia Telemetry Data\r\n export enum EnumTelemetryMediaActivity {\r\n PLAYED = 'PLAYED',\r\n PAUSED = 'PAUSED',\r\n SEEKED = 'SEEKED',\r\n ENDED = 'ENDED',\r\n VOLUME_CHANGE = 'VOLUME_CHANGE',\r\n MUTE = 'MUTE',\r\n UNMUTE = 'UNMUTE',\r\n PLAYBACK_SPEED_CHANGE = 'PLAYBACK_SPEED_CHANGE',\r\n FULLSCREEN_ACTIVATED = 'FULLSCREEN_ACTIVATED',\r\n FULLSCREEN_DEACTIVATED = 'FULLSCREEN_DEACTIVATED',\r\n PICTURE_IN_PICTURE_ACTIVATED = 'PICTURE_IN_PICTURE_ACTIVATED',\r\n PICTURE_IN_PICTURE_DEACTIVATED = 'PICTURE_IN_PICTURE_DEACTIVATED',\r\n NONE = 'NONE',\r\n }\r\n export enum EnumTelemetryMediaState {\r\n PLAYING = 'PLAYING',\r\n PAUSED = 'PAUSED',\r\n ENDED = 'ENDED',\r\n BUFFERING = 'BUFFERING',\r\n NOT_STARTED = 'NOT_STARTED',\r\n }\r\n export interface IWsEventTelemetryMediaData extends IWsEventTelemetry {\r\n currentState: EnumTelemetryMediaState\r\n activityType: EnumTelemetryMediaActivity\r\n currentTime: number | null\r\n totalTime: number | null\r\n maxedSeekedTime: number\r\n activityStartedAt?: Date | null\r\n }\r\n export type WsEventTelemetryMedia = IWsEvents<IWsEventTelemetryMediaData>\r\n\r\n export enum EnumTelemetrymodules {\r\n CONTENT = 'content',\r\n FEEDBACK = 'feedback',\r\n COURSE = 'course',\r\n PROGRAM = 'program',\r\n EXPLORE = 'explore',\r\n LEARN = 'learn',\r\n HOME = 'home',\r\n DASHBOARD = 'dashboard',\r\n SEARCH = 'search',\r\n DISCUSS = 'Discuss',\r\n COMPETENCY = 'competency',\r\n EVENTS = 'events',\r\n CAREER = 'career',\r\n PROFILE = 'profile',\r\n NETWORK = 'network',\r\n SUPPORT = 'support',\r\n KARMAPOINTS = 'karmapoints',\r\n PLATFORM_RATING = 'platformrating',\r\n }\r\n export enum EnumInteractTypes {\r\n CLICK = 'click',\r\n subType = 'subType',\r\n }\r\n export enum EnumInteractSubTypes {\r\n COURSE_TAB = 'course-tab',\r\n CAREER_TAB = 'career-tab',\r\n NETWORK_TAB = 'network-tab',\r\n COMPETENCY_TAB = 'competency-tab',\r\n PROFILE_EDIT_TAB = 'profile-edit-tab',\r\n DISCUSS_TAB = 'discuss-tab',\r\n EVENTS_TAB = 'events-tab',\r\n SIDE_MENU = 'side-menu',\r\n MY_IGOT = 'my-igot',\r\n MY_LEARNING = 'my-learning',\r\n RECENTLY_ADDED = 'recently-added',\r\n TRENDING_IN_YOUR_DEPARTMENT = 'trending-in-your-department',\r\n TRENDING_ACROSS_YOUR_DEPARTMENTS = 'trending-across-your-departments',\r\n LEARNING_UNDER_30_MINUTES = 'learning-under-30-minutes',\r\n BLENDED_PROGRAM = 'blended program',\r\n RECENT_CONNECTION_REQUEST = 'recent-connection-request',\r\n CERTIFICATIONS_OF_THE_WEEK = 'certifications-of-the-week',\r\n HOME_PAGE_STRIP_TABS = 'home-page-strip-tabs',\r\n HUB_MENU = 'hub-menu',\r\n PORTAL_NUDGE = 'portal_nudge',\r\n CERTIFICATE = 'certificate',\r\n DEFAULT_SUBTYPE = 'default-subtype',\r\n SUGGESTED_CONNECTIONS = 'suggested-connections',\r\n PROFILE = 'profile',\r\n ADD_POST = 'add-post',\r\n TRENDING_DISCUSSIONS = 'trending-discussions',\r\n MY_DISCUSSIONS = 'my-discussions',\r\n }\r\n}\r\n","import { Platform } from '@angular/cdk/platform'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\nimport { Observable } from 'rxjs'\r\nimport { Router, NavigationEnd, ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router'\r\nimport { WsEvents } from './event.model'\r\ninterface IWindowMobileAppModified extends Window {\r\n appRef?: any\r\n webkit?: any\r\n}\r\ndeclare var window: IWindowMobileAppModified\r\n\r\nconst RANDOM_ID_PER_USER = 0\r\ninterface IRecursiveData {\r\n identifier: string\r\n children: null | IRecursiveData[]\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UtilityService {\r\n currentRouteData: any[] = []\r\n constructor(\r\n private http: HttpClient,\r\n private platform: Platform,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n // private events: EventService,\r\n ) {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationEnd) {\r\n // let snapshot = this.router.routerState.firstChild(this.activatedRoute).snapshot\r\n // console.log('this.route.snapshot :: ', this.route.snapshot)\r\n const snapshot = this.route.snapshot\r\n // console.log('root.snapshot.root.firstChild ', snapshot.root.firstChild)\r\n // console.log('firstChild ', snapshot.firstChild)\r\n const firstChild = snapshot.root.firstChild\r\n this.getChildRouteData(snapshot, firstChild)\r\n }\r\n })\r\n }\r\n\r\n private getChildRouteData(snapshot: ActivatedRouteSnapshot, firstChild: ActivatedRouteSnapshot | null) {\r\n if (firstChild) {\r\n if (firstChild.data) {\r\n // console.log('firstChild.data', firstChild.data)\r\n this.currentRouteData.push(firstChild.data)\r\n }\r\n if (firstChild.firstChild) {\r\n this.getChildRouteData(snapshot, firstChild.firstChild)\r\n }\r\n }\r\n }\r\n\r\n get randomId() {\r\n return RANDOM_ID_PER_USER + 1\r\n }\r\n\r\n getJson<T>(url: string): Observable<T> {\r\n return this.http.get<T>(url)\r\n }\r\n\r\n getLeafNodes<T extends IRecursiveData>(node: T, nodes: T[]): T[] {\r\n if ((node.children || []).length === 0) {\r\n nodes.push(node)\r\n } else {\r\n if (node.children) {\r\n node.children.forEach(child => {\r\n this.getLeafNodes(child, nodes)\r\n })\r\n }\r\n }\r\n return nodes\r\n }\r\n getPath<T extends IRecursiveData>(node: T, id: string): T[] {\r\n const path: T[] = []\r\n this.hasPath(node, path, id)\r\n return path\r\n }\r\n\r\n private hasPath<T extends IRecursiveData>(node: T, pathArr: T[], id: string): boolean {\r\n if (node == null) {\r\n return false\r\n }\r\n pathArr.push(node)\r\n if (node.identifier === id) {\r\n return true\r\n }\r\n const children = node.children || []\r\n if (children.some(u => this.hasPath(u, pathArr, id))) {\r\n return true\r\n }\r\n pathArr.pop()\r\n return false\r\n }\r\n\r\n get isMobile(): boolean {\r\n if (this.isIos || this.isAndroid) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n get isIos(): boolean {\r\n return this.platform.IOS\r\n }\r\n\r\n get isAndroid(): boolean {\r\n return this.platform.ANDROID\r\n }\r\n get isAndroidApp(): boolean {\r\n return Boolean(window.appRef)\r\n }\r\n\r\n get iOsAppRef() {\r\n if (\r\n window.webkit &&\r\n window.webkit.messageHandlers &&\r\n window.webkit.messageHandlers.appRef\r\n ) {\r\n return window.webkit.messageHandlers.appRef\r\n }\r\n return null\r\n }\r\n\r\n public setRouteData(data: any) {\r\n this.currentRouteData = data\r\n }\r\n\r\n get routeData(): WsEvents.ITelemetryPageContext {\r\n const data: WsEvents.ITelemetryPageContext = {\r\n module: '',\r\n pageId: '',\r\n }\r\n // tslint:disable-next-line: no-console\r\n // console.log('Final currentDataRoute get routeData()', this.currentRouteData)\r\n this.currentRouteData.map((rd: any) => {\r\n if (rd.pageId) {\r\n data.pageId = `${data.pageId}/${rd.pageId}`\r\n }\r\n if (rd.module) {\r\n data.module = rd.module\r\n }\r\n })\r\n return data\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Subject } from 'rxjs'\r\nimport { WsEvents } from './event.model'\r\nimport { UtilityService } from './utility.service'\r\n/* tslint:disable*/\r\nimport _ from 'lodash'\r\nimport moment from 'moment'\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EventService {\r\n todaysEvents: any = []\r\n \r\n private eventsSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public events$ = this.eventsSubject.asObservable()\r\n\r\n private eventsChatbotSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public chatbotEvents$ = this.eventsChatbotSubject.asObservable()\r\n\r\n private eventsGetStartSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public getStartEvents$ = this.eventsGetStartSubject.asObservable()\r\n\r\n private eventsPRSubject = new Subject<WsEvents.IWsEvents<any>>()\r\n public getPREvents$ = this.eventsPRSubject.asObservable()\r\n\r\n environment: any\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private utilitySvc: UtilityService,\r\n ) {\r\n this.environment = environment\r\n // this.focusChangeEventListener()\r\n }\r\n\r\n dispatchEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n event.pageContext = this.getContext(event.pageContext)\r\n this.eventsSubject.next(event)\r\n }\r\n\r\n dispatchChatbotEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n this.eventsChatbotSubject.next(event)\r\n }\r\n\r\n dispatchGetStartedEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n this.eventsGetStartSubject.next(event)\r\n }\r\n\r\n dispatchPlatformRatingEvent<T>(event: WsEvents.IWsEvents<T>) {\r\n this.eventsPRSubject.next(event)\r\n }\r\n\r\n\r\n // helper functions\r\n raiseInteractTelemetry(edata: WsEvents.ITelemetryEdata, object: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n this.dispatchEvent<WsEvents.IWsEventTelemetryInteract>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Info,\r\n data: {\r\n edata,\r\n object,\r\n pageContext: this.getContext(pageContext),\r\n eventSubType: WsEvents.EnumTelemetrySubType.Interact,\r\n },\r\n from: '',\r\n to: 'Telemetry',\r\n })\r\n }\r\n\r\n raiseFeedbackTelemetry(edata: WsEvents.ITelemetryEdata, object: any, from?: string) {\r\n this.dispatchEvent<WsEvents.IWsEventTelemetryInteract>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Info,\r\n data: {\r\n edata,\r\n object,\r\n eventSubType: WsEvents.EnumTelemetrySubType.Feedback,\r\n },\r\n from: from || '',\r\n to: 'Telemetry',\r\n })\r\n }\r\n\r\n // Raise custom impression events eg:on tab change\r\n raiseCustomImpression(object: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n this.dispatchEvent<WsEvents.IWsEventTelemetryImpression>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Info,\r\n data: {\r\n object,\r\n pageContext: this.getContext(pageContext),\r\n eventSubType: WsEvents.EnumTelemetrySubType.Impression,\r\n },\r\n from: '',\r\n to: 'Telemetry',\r\n })\r\n }\r\n\r\n // private focusChangeEventListener() {\r\n // fromEvent(window, 'focus').subscribe(() => {\r\n // this.raiseInteractTelemetry('focus', 'gained', {})\r\n // })\r\n // fromEvent(window, 'blur').subscribe(() => {\r\n // this.raiseInteractTelemetry('focus', 'lost', {})\r\n // })\r\n // }\r\n\r\n // Method to get the context information about the telemetry interact event\r\n private getContext(pageContext: WsEvents.ITelemetryPageContext | undefined): WsEvents.ITelemetryPageContext {\r\n const routeDataContext = this.utilitySvc.routeData\r\n // initialize with the route data configuration - current route's pageID & module\r\n const finalContext: WsEvents.ITelemetryPageContext = {\r\n pageId: routeDataContext.pageId,\r\n module: routeDataContext.module,\r\n }\r\n if (pageContext) {\r\n // if context has pageIdExt, append it to the route's pageId\r\n if (pageContext.pageIdExt) {\r\n finalContext.pageId = `${routeDataContext.pageId}_${pageContext.pageIdExt}`\r\n } else if (pageContext.pageId) {\r\n // else context has pageId, override it to the final pageID\r\n finalContext.pageId = pageContext.pageId\r\n }\r\n // if context has module, override it to the final module\r\n if (pageContext.module) {\r\n finalContext.module = pageContext.module\r\n }\r\n }\r\n\r\n return finalContext\r\n }\r\n\r\n public handleTabTelemetry(subType: string, data: WsEvents.ITelemetryTabData, object?:any) {\r\n // raise a tab click interact event\r\n this.raiseInteractTelemetry(\r\n {\r\n subType,\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: `${_.camelCase(data.label)}-tab`,\r\n },\r\n {\r\n // context: {\r\n // position: data.index,\r\n // },\r\n ...object\r\n },\r\n {\r\n pageIdExt: `${_.camelCase(data.label)}-tab`,\r\n })\r\n\r\n // raise a tab click impression event\r\n this.raiseCustomImpression({\r\n context: {\r\n position: data.index,\r\n },\r\n ...object\r\n },{\r\n pageIdExt: `${_.camelCase(data.label)}-tab`,\r\n })\r\n }\r\n\r\n getPublicUrl(url: string): string {\r\n const mainUrl = url.split('/content').pop() || ''\r\n return `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\r\n }\r\n\r\n allEventDateFormat(datetime: any) {\r\n const date = new Date(datetime).getDate()\r\n const year = new Date(datetime).getFullYear()\r\n const month = new Date(datetime).getMonth()\r\n const hours = new Date(datetime).getHours()\r\n const minutes = new Date(datetime).getMinutes()\r\n const seconds = new Date(datetime).getSeconds()\r\n const formatedDate = new Date(year, month, date, hours, minutes, seconds, 0)\r\n // let format = 'YYYY-MM-DD hh:mm a'\r\n // if (!timeAllow) {\r\n const format = 'YYYY-MM-DD'\r\n // }\r\n const readableDateMonth = moment(formatedDate).format(format)\r\n const finalDateTimeValue = `${readableDateMonth}`\r\n return finalDateTimeValue\r\n }\r\n\r\n compareDate(startDate: any) {\r\n const now = new Date()\r\n\r\n // tslint:disable-next-line:prefer-template\r\n const day = ('0' + (new Date().getDate())).slice(-2)\r\n const year = new Date().getFullYear()\r\n // tslint:disable-next-line:prefer-template\r\n const month = ('0' + (now.getMonth() + 1)).slice(-2)\r\n const todaysdate = `${year}-${month}-${day}`\r\n if (startDate === todaysdate) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n customDateFormat(date: any, time: any) {\r\n const stime = time.split('+')[0]\r\n const hour = stime.substr(0, 2)\r\n const min = stime.substr(2, 3)\r\n return `${date} ${hour}${min}`\r\n }\r\n\r\n\r\n setEventListData(eventObj: any) {\r\n if (eventObj !== undefined) {\r\n this.todaysEvents = []\r\n const data = eventObj\r\n // console.log('strip comp', data)\r\n Object.keys(data).forEach((index: any) => {\r\n const obj = data[index]\r\n const floor = Math.floor\r\n const hours = floor(obj.duration / 60)\r\n const minutes = obj.duration % 60\r\n const duration = (hours === 0) ? ((minutes === 0) ? '---' : `${minutes} minutes`) : (minutes === 0) ? (hours === 1) ?\r\n `${hours} hour` : `${hours} hours` : (hours === 1) ? `${hours} hour ${minutes} minutes` :\r\n `${hours} hours ${minutes} minutes`\r\n const creatordata = obj.creatorDetails !== undefined ? obj.creatorDetails : []\r\n const str = creatordata && creatordata.length > 0 ? creatordata.replace(/\\\\/g, '') : []\r\n const creatorDetails = str && str.length > 0 ? JSON.parse(str) : creatordata\r\n\r\n const stime = obj.startTime.split('+')[0]\r\n const hour = stime.substr(0, 2)\r\n const min = stime.substr(2, 3)\r\n const starttime = `${hour}${min}`\r\n\r\n const etime = obj.endTime.split('+')[0]\r\n const ehour = etime.substr(0, 2)\r\n const emin = etime.substr(2, 3)\r\n const endtime = `${ehour}${emin}`\r\n\r\n const eventDataObj = {\r\n event: obj,\r\n eventName: obj.name,\r\n eventStartTime: starttime,\r\n eventEndTime: endtime,\r\n eventStartDate: obj.startDate,\r\n eventCreatedOn: this.allEventDateFormat(obj.createdOn),\r\n eventDuration: duration,\r\n eventjoined: creatorDetails.length,\r\n eventThumbnail: obj.appIcon && (obj.appIcon !== null || obj.appIcon !== undefined) ?\r\n this.getPublicUrl(obj.appIcon) :\r\n '/assets/icons/Events_default.png',\r\n pastevent: false,\r\n }\r\n const isToday = this.compareDate(obj.startDate)\r\n if (isToday) {\r\n this.todaysEvents.push(eventDataObj)\r\n }\r\n })\r\n }\r\n}\r\n}\r\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core'\nimport {\n fromEvent,\n Subscription,\n timer,\n} from 'rxjs'\nimport { debounceTime, throttleTime } from 'rxjs/operators'\nimport { TFetchStatus } from '../../constants/misc.constants'\nimport { EventService } from '../../services/event.service'\nimport { WsEvents } from '../../services/event.model'\n\n@Component({\n selector: 'ws-utils-horizontal-scroller-v2',\n templateUrl: './horizontal-scroller-v2.component.html',\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\n})\n\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\n\n @Input() loadStatus: TFetchStatus = 'fetching'\n @Input() onHover = false\n @Input() sliderConfig = {\n showNavs: true,\n showDots: true,\n cerificateCardMargin: false,\n }\n @Output() loadNext = new EventEmitter()\n @Input() widgetsLength: any\n @Input() defaultMaxWidgets: any\n @Input() stripConfig: any\n @Input() stripsResultDataMap: any\n @Input() subtype!: string\n @ViewChild('horizontalScrollElem', { static: true })\n horizontalScrollElem: ElementRef | null = null\n\n enablePrev = false\n enableNext = false\n activeNav = 0\n cardSubType = 'standard'\n bottomDotsArray: any = []\n private scrollObserver: Subscription | null = null\n\n constructor(private eventService: EventService) { }\n\n ngOnInit() {\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard'\n if (this.horizontalScrollElem) {\n const horizontalScrollElem = this.horizontalScrollElem\n this.scrollObserver = fromEvent(\n horizontalScrollElem.nativeElement,\n 'scroll',\n )\n .pipe(debounceTime(100), throttleTime(100))\n .subscribe(_ => {\n this.updateNavigationBtnStatus(horizontalScrollElem\n .nativeElement as HTMLElement)\n })\n\n this.getBottomDotsArray()\n }\n }\n\n ngOnChanges() {\n timer(100).subscribe(() => {\n if (this.horizontalScrollElem) {\n this.updateNavigationBtnStatus(this.horizontalScrollElem\n .nativeElement as HTMLElement)\n }\n })\n this.getBottomDotsArray()\n }\n\n ngOnDestroy() {\n if (this.scrollObserver) {\n this.scrollObserver.unsubscribe()\n }\n }\n\n showPrev() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft -= 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\n behavior: 'smooth',\n })\n\n this.activeNav -= 1\n this.raiseNavigationTelemetry('more-left')\n }\n }\n\n showNext() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft += 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\n behavior: 'smooth',\n })\n this.activeNav += 1\n this.raiseNavigationTelemetry('more-right')\n }\n }\n private raiseNavigationTelemetry(id: string) {\n this.eventService.raiseInteractTelemetry(\n {\n id,\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: this.subtype,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n )\n }\n\n private updateNavigationBtnStatus(elem: HTMLElement) {\n this.enablePrev = true\n this.enableNext = true\n if (elem.scrollLeft === 0) {\n this.enablePrev = false\n this.activeNav = 0\n }\n\n const widthDiff = Math.abs(elem.scrollWidth - Math.round(elem.clientWidth + elem.scrollLeft))\n if (widthDiff === 0 || widthDiff === 1) {\n if (this.loadStatus === 'hasMore') {\n this.loadNext.emit()\n } else {\n this.enableNext = false\n if (this.bottomDotsArray.length) {\n this.activeNav = this.bottomDotsArray.length - 1\n }\n }\n }\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth)\n }\n }\n\n slideTo(ele: any) {\n const diff = ele - this.activeNav\n // if (ele > this.activeNav && ele !== this.activeNav) {\n // if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // } else {\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // }\n if (this.horizontalScrollElem) {\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\n behavior: 'smooth',\n })\n }\n this.activeNav = ele\n }\n\n getBottomDotsArray() {\n if (this.horizontalScrollElem) {\n this.bottomDotsArray = []\n let cardWidth\n let arrLength\n // console.log('this.cardSubType-->',this.cardSubType)\n if (this.cardSubType !== 'card-wide-v2') {\n cardWidth = this.cardSubType === 'standard' ? 245 :\n ((document.getElementsByClassName(this.cardSubType) &&\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245)\n if (document.getElementsByClassName('horizontal-scroll-container') &&\n document.getElementsByClassName('horizontal-scroll-container')[0]) {\n const scrollerWidth = document.getElementsByClassName('horizontal-scroll-container')[0].clientWidth\n const totalCardsLength = cardWidth * this.widgetsLength\n if (totalCardsLength > scrollerWidth) {\n arrLength = (scrollerWidth / cardWidth)\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets\n arrLength = this.defaultMaxWidgets / arrLength\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i)\n }\n // console.log('this.cardSubType', this.cardSubType, arrLength, this.widgetsLength ,\n // this.defaultMaxWidgets, scrollerWidth, this.bottomDotsArray)\n }\n }\n } else {\n setTimeout(() => {\n arrLength = document.getElementsByClassName(this.cardSubType).length\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i)\n }\n }, 1000)\n }\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component'\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material'\n\n@NgModule({\n declarations: [HorizontalScrollerV2Component],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n ],\n exports: [HorizontalScrollerV2Component],\n})\nexport class HorizontalScrollerV2Module { }\n","// tslint:disable:no-console\r\nimport { Injectable } from '@angular/core'\r\nimport { ConfigurationsService } from './configurations.service'\r\n\r\ntype consoleFun = (...args: any) => void\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoggerService {\r\n constructor(private configSvc: ConfigurationsService) { }\r\n\r\n private consoleError = console.error\r\n private consoleInfo = console.info\r\n private consoleLog = console.log\r\n private consoleWarn = console.warn\r\n private noConsole: consoleFun = () => { }\r\n\r\n get error() {\r\n return this.consoleError\r\n }\r\n get info() {\r\n return this.configSvc.isProduction ? this.noConsole : this.consoleInfo\r\n }\r\n get log() {\r\n return this.configSvc.isProduction ? this.noConsole : this.consoleLog\r\n }\r\n get warn() {\r\n return this.configSvc.isProduction ? this.noConsole : this.consoleWarn\r\n }\r\n\r\n removeConsoleAccess() {\r\n if (this.configSvc.isProduction) {\r\n return\r\n }\r\n const noConsoleWithError: consoleFun = () => {\r\n throw new Error('Console Functions Usage Are Not Allowed.')\r\n }\r\n // console.log = noConsoleWithError\r\n console.warn = noConsoleWithError\r\n console.info = noConsoleWithError\r\n console.error = noConsoleWithError\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { LoggerService } from './logger.service'\r\nimport { NsInstanceConfig } from './configurations.model'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { IWsMsTokenModelResponse } from './ms-office.model'\r\n// TODO: Use a url-search-polyfill if the site didnot work in IE 11\r\n\r\nconst msTokenExpiryDuration = 600\r\nconst storageKey = 'msLoginRequested'\r\nconst storage = localStorage\r\n\r\nconst API_ENDPOINTS = {\r\n sharePointToken: '/apis/protected/v8/user/token',\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthMicrosoftService {\r\n private msConfig: NsInstanceConfig.IMicrosoft = {\r\n clientId: '',\r\n tenant: '',\r\n defaultEmailId: '',\r\n validEmailExtensions: [],\r\n isConfigured: false,\r\n }\r\n private emailUsed: string | null = null\r\n private code: string | null = null\r\n private msToken: IWsMsTokenModelResponse = {\r\n accessToken: '',\r\n expiresOn: '',\r\n resource: '',\r\n tokenType: '',\r\n }\r\n\r\n constructor(private loggerSvc: LoggerService, private http: HttpClient) { }\r\n\r\n get isLogoutRequired(): boolean {\r\n return Boolean(this.msConfig.isConfigured && this.msConfig.clientId && this.emailUsed)\r\n }\r\n get loginUrl(): string | null {\r\n if (this.msConfig.isConfigured && this.msConfig.clientId) {\r\n const base = 'https://login.windows.net/common/oauth2/authorize'\r\n const searchParam = new URLSearchParams({\r\n response_type: 'code',\r\n client_id: this.msConfig.clientId,\r\n redirect_uri: window.location.href,\r\n })\r\n const fragment = location.search.substring(1)\r\n if (fragment) {\r\n return `${base}?${searchParam.toString()}#${fragment}`\r\n }\r\n return `${base}?${searchParam.toString()}`\r\n }\r\n return null\r\n }\r\n logoutUrl(redirectUrl: string) {\r\n if (this.isValidEmail(this.emailUsed || '')) {\r\n return `https://login.microsoftonline.com/common/oauth2/logout?post_logout_redirect_uri=${redirectUrl}`\r\n }\r\n return redirectUrl\r\n }\r\n\r\n // Behavior Methods\r\n\r\n async init(config: Pick<NsInstanceConfig.IConfig, 'microsoft'>) {\r\n if (!config || !config.microsoft || !config.microsoft.isConfigured) {\r\n this.loggerSvc.warn('Empty/No Configuration passed, ignoring Microsoft Authentication')\r\n }\r\n this.msConfig = config.microsoft\r\n const queryParams = new URLSearchParams(location.search)\r\n if (queryParams.has('code') && queryParams.has('session_state')) {\r\n this.code = queryParams.get('code')\r\n if (!this.code) {\r\n return\r\n }\r\n let url = location.origin + location.pathname\r\n await this.exchangeTokenForCode(this.code, url)\r\n if (location.hash) {\r\n url += location.hash.substring(1)\r\n }\r\n history.replaceState(null, '', url)\r\n }\r\n }\r\n\r\n async login(email: string) {\r\n if (!this.isValidEmail(email)) {\r\n this.loggerSvc.warn(`Microsoft Login is not allowed for your emailId (${email})`)\r\n return\r\n }\r\n const loginUrl = this.loginUrl\r\n if (loginUrl) {\r\n location.assign(loginUrl)\r\n } else {\r\n this.loggerSvc.warn('Unable to identify Office Login URL, Ignoring login request')\r\n }\r\n }\r\n\r\n async getToken(email: string): Promise<string> {\r\n if (\r\n this.msToken &&\r\n this.isValid(this.msToken.accessToken, this.msToken.expiresOn) &&\r\n this.msToken.accessToken\r\n ) {\r\n return this.msToken.accessToken\r\n }\r\n if (this.isValidEmail(email)) {\r\n try {\r\n this.msToken = await this.getTokenForEmail(email)\r\n if (this.msToken.accessToken) {\r\n this.emailUsed = email\r\n return this.msToken.accessToken\r\n }\r\n } catch (error) {\r\n if (!this.code) {\r\n this.login(email)\r\n }\r\n }\r\n }\r\n if (this.msConfig.defaultEmailId && this.isValidEmail(this.msConfig.defaultEmailId)) {\r\n try {\r\n this.msToken = await this.getTokenForEmail(this.msConfig.defaultEmailId)\r\n if (this.msToken.accessToken) {\r\n this.emailUsed = this.msConfig.defaultEmailId\r\n return this.msToken.accessToken\r\n }\r\n } catch (error) { }\r\n }\r\n throw new Error('UNABLE TO FETCH MS AUTH TOKEN')\r\n }\r\n\r\n loginForSSOEnabledEmbed(email: string) {\r\n if (!this.isValidEmail(email)) {\r\n this.loggerSvc.warn('SSO Login request Ignored. Invalid Email Id for SSO Enabled Content')\r\n }\r\n let msPrevTS = 0\r\n try {\r\n msPrevTS = parseInt(storage.getItem(storageKey) || '0', 10)\r\n } catch (error) { }\r\n if (!msPrevTS || (msPrevTS && (Date.now() - msPrevTS) / 1000 > msTokenExpiryDuration)) {\r\n this.loggerSvc.info(\r\n `last login exceeded ${msTokenExpiryDuration} duration. Redirecting to O365 login`,\r\n )\r\n storage.setItem(storageKey, Date.now().toString())\r\n this.login(email)\r\n }\r\n }\r\n\r\n isValidEmail(email: string) {\r\n return this.msConfig.validEmailExtensions.some(ext => email.endsWith(ext))\r\n }\r\n\r\n isValid(accessToken: string | undefined, expiresOn: string | undefined): boolean {\r\n if (accessToken && expiresOn) {\r\n // TODO: Implement expiredOn and Date comparison based validity\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n async exchangeTokenForCode(code: string, redirectUrl: string): Promise<any> {\r\n const response = await this.http\r\n .get<IWsMsTokenModelResponse>(`${API_ENDPOINTS}?code=${code}&redirectUrl=${redirectUrl}`)\r\n .toPromise()\r\n return this.getInstanceFromResponse(response)\r\n }\r\n\r\n async getTokenForEmail(email: string): Promise<any> {\r\n const response = await this.http\r\n .get<IWsMsTokenModelResponse>(`${API_ENDPOINTS.sharePointToken}?email=${email}`)\r\n .toPromise()\r\n return this.getInstanceFromResponse(response)\r\n }\r\n\r\n getInstanceFromResponse(token: IWsMsTokenModelResponse) {\r\n return {\r\n accessToken: token.accessToken,\r\n expiresOn: token.expiresOn,\r\n resource: token.resource,\r\n tokenType: token.tokenType,\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\nimport { KeycloakEvent, KeycloakEventType, KeycloakInitOptions, KeycloakService } from 'keycloak-angular'\r\nimport { fromEvent, ReplaySubject } from 'rxjs'\r\nimport { filter } from 'rxjs/operators'\r\nimport { AuthMicrosoftService } from './auth-microsoft.service'\r\nimport { ConfigurationsService } from './configurations.service'\r\n\r\ninterface IParsedToken {\r\n email?: string\r\n encEmail?: string\r\n name?: string\r\n preferred_username?: string\r\n}\r\n\r\nconst storage = localStorage\r\nconst storageKey = 'kc'\r\n// const logoutRedirectUrl = ''\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthKeycloakService {\r\n private loginChangeSubject = new ReplaySubject<boolean>(1)\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService,\r\n private keycloakSvc: KeycloakService,\r\n private msAuthSvc: AuthMicrosoftService,\r\n ) {\r\n this.loginChangeSubject.subscribe((isLoggedIn: boolean) => {\r\n this.configSvc.isAuthenticated = isLoggedIn\r\n if (\r\n isLoggedIn &&\r\n this.configSvc.instanceConfig &&\r\n Boolean(this.configSvc.instanceConfig.disablePidCheck)\r\n ) {\r\n this.configSvc.userProfile = {\r\n email: this.userEmail,\r\n userName: this.userName,\r\n userId: this.userId || '',\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Getters\r\n get isLoggedIn$() {\r\n return this.loginChangeSubject.asObservable()\r\n }\r\n get isLoggedIn(): Promise<boolean> {\r\n return this.keycloakSvc.isLoggedIn()\r\n }\r\n get isAuthenticated(): boolean | undefined {\r\n return this.keycloakSvc.getKeycloakInstance().authenticated\r\n }\r\n get token(): string | undefined {\r\n return this.keycloakSvc.getKeycloakInstance().token\r\n }\r\n get sessionId(): string | undefined {\r\n return this.keycloakSvc.getKeycloakInstance().sessionId\r\n }\r\n get userId(): string | undefined {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n if (!kc) {\r\n return\r\n }\r\n return (kc.tokenParsed && kc.tokenParsed.sub) || (kc.idTokenParsed && kc.idTokenParsed.sub)\r\n }\r\n\r\n get userEmail(): string | undefined {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n\r\n const tokenParsed = kc.tokenParsed as IParsedToken\r\n const idTokenParsed = kc.idTokenParsed as IParsedToken\r\n return (\r\n (tokenParsed && tokenParsed.email) ||\r\n (idTokenParsed && idTokenParsed.email) ||\r\n (idTokenParsed && idTokenParsed.encEmail) ||\r\n (tokenParsed && tokenParsed.preferred_username) ||\r\n (idTokenParsed && idTokenParsed.preferred_username)\r\n )\r\n }\r\n\r\n get userName(): string | undefined {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n return (\r\n (kc.tokenParsed && (kc.tokenParsed as IParsedToken).name) ||\r\n (kc.idTokenParsed && (kc.idTokenParsed as IParsedToken).name)\r\n )\r\n }\r\n\r\n async initAuth(): Promise<boolean> {\r\n if (!this.configSvc.instanceConfig) {\r\n return false\r\n }\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig.microsoft.isConfigured) {\r\n this.msAuthSvc.init({ microsoft: instanceConfig.microsoft })\r\n }\r\n try {\r\n this.setupGlobalAuthResponder()\r\n this.addKeycloakEventListener()\r\n return await this.keycloakSvc.init({\r\n config: {\r\n url: instanceConfig.keycloak.url,\r\n realm: instanceConfig.keycloak.realm,\r\n clientId: instanceConfig.keycloak.clientId,\r\n },\r\n initOptions: {\r\n ...this.getSavedKcConfig(),\r\n onLoad: instanceConfig.keycloak.onLoad || 'check-sso',\r\n checkLoginIframe: false,\r\n },\r\n enableBearerInterceptor: true,\r\n loadUserProfileAtStartUp: false,\r\n bearerExcludedUrls: instanceConfig.keycloak.bearerExcludedUrls,\r\n })\r\n } catch (err) {\r\n return false\r\n }\r\n }\r\n\r\n login(\r\n idpHint: 'E' | 'N' | 'S' = 'E',\r\n redirectUrl: string = this.defaultRedirectUrl,\r\n ): Promise<void> {\r\n return this.keycloakSvc.login({\r\n idpHint,\r\n redirectUri: redirectUrl,\r\n })\r\n }\r\n loginV2(\r\n _idpHint: 'E' | 'N' | 'S' = 'E',\r\n redirectUrl: string = this.defaultRedirectUrl,\r\n ): Promise<void> {\r\n if (this.configSvc.instanceConfig) {\r\n window.location.href = this.configSvc.instanceConfig.keycloak.url + redirectUrl\r\n return Promise.resolve()\r\n }\r\n return Promise.reject()\r\n }\r\n register(\r\n redirectUrl: string = this.defaultRedirectUrl,\r\n ): Promise<void> {\r\n return this.keycloakSvc.register({\r\n redirectUri: redirectUrl,\r\n })\r\n }\r\n /**\r\n * @deprecated this will be depricated\r\n */\r\n async logout(redirectUrl = this.defaultRedirectUrl) {\r\n if (storage.getItem('telemetrySessionId')) {\r\n storage.removeItem('telemetrySessionId')\r\n }\r\n try {\r\n sessionStorage.clear()\r\n localStorage.clear()\r\n } catch {\r\n\r\n }\r\n storage.removeItem(storageKey)\r\n // alert(`${redirectUrl}apis/reset`)\r\n window.location.href = `${redirectUrl}apis/reset`\r\n // window.location.href = 'http://localhost:3003/reset'\r\n // await this.http.get('/apis/reset').toPromise()\r\n // setTimeout(window.location.href = `${redirectUrl}apis/reset`, 13000)\r\n // logoutRedirectUrl = redirectUrl\r\n // if (this.msAuthSvc.isLogoutRequired) {\r\n // this.keycloakSvc.logout(this.msAuthSvc.logoutUrl(redirectUrl))\r\n // } else {\r\n // this.keycloakSvc.logout(redirectUrl)\r\n // }\r\n }\r\n async force_logout() {\r\n if (storage.getItem('telemetrySessionId')) {\r\n storage.removeItem('telemetrySessionId')\r\n } else {\r\n // window.location.href = '/public/home'\r\n storage.removeItem(storageKey)\r\n await this.http.get('/apis/reset').toPromise()\r\n await this.http.get('https://admin-test.ecornell.com/saml/logout.do').toPromise()\r\n }\r\n try {\r\n sessionStorage.clear()\r\n localStorage.clear()\r\n } catch {\r\n\r\n }\r\n storage.removeItem(storageKey)\r\n await this.http.get('/apis/reset').toPromise()\r\n await this.http.get('https://admin-test.ecornell.com/saml/logout.do').toPromise()\r\n }\r\n private addKeycloakEventListener() {\r\n this.keycloakSvc.keycloakEvents$.subscribe((event: KeycloakEvent) => {\r\n switch (event.type) {\r\n case KeycloakEventType.OnAuthError:\r\n this.loginChangeSubject.next(false)\r\n break\r\n case KeycloakEventType.OnAuthLogout:\r\n this.loginChangeSubject.next(false)\r\n storage.removeItem(storageKey)\r\n break\r\n case KeycloakEventType.OnAuthRefreshError:\r\n break\r\n case KeycloakEventType.OnAuthRefreshSuccess:\r\n break\r\n case KeycloakEventType.OnAuthSuccess:\r\n break\r\n case KeycloakEventType.OnReady:\r\n this.loginChangeSubject.next(event.args)\r\n if (event.args) {\r\n this.saveKeycloakConfig()\r\n }\r\n break\r\n case KeycloakEventType.OnTokenExpired:\r\n this.keycloakSvc.updateToken(60)\r\n break\r\n }\r\n })\r\n }\r\n\r\n private setupGlobalAuthResponder() {\r\n fromEvent<MessageEvent>(window, 'message')\r\n .pipe(\r\n filter(\r\n (event: MessageEvent) =>\r\n Boolean(event) &&\r\n Boolean(event.data) &&\r\n event.data.type === 'AUTH_REQUEST' &&\r\n Boolean(event.source && typeof event.source.postMessage === 'function'),\r\n ),\r\n )\r\n .subscribe(async (event: MessageEvent) => {\r\n const contentWindow = event.source as Window\r\n const token = await this.keycloakSvc.getToken()\r\n const response = {\r\n app: 'WEB_PORTAL',\r\n type: 'AUTH_RESPONSE',\r\n state: 'NONE',\r\n plugin: 'NONE',\r\n data: {\r\n token,\r\n id: event.data && event.data.data && event.data.data.id,\r\n },\r\n }\r\n contentWindow.postMessage(response, '*')\r\n })\r\n }\r\n\r\n // Utility Methods\r\n private saveKeycloakConfig() {\r\n const kc = this.keycloakSvc.getKeycloakInstance()\r\n const kcInitOptions: KeycloakInitOptions = {\r\n idToken: kc.idToken,\r\n refreshToken: kc.refreshToken,\r\n timeSkew: kc.timeSkew,\r\n token: kc.token,\r\n }\r\n storage.setItem(storageKey, JSON.stringify(kcInitOptions))\r\n }\r\n private getSavedKcConfig(): KeycloakInitOptions {\r\n try {\r\n // const lastSaved = KEYCLOAK_STORAGE.getItem(key);\r\n const lastSaved = storage.getItem(storageKey)\r\n if (lastSaved) {\r\n const processed = JSON.parse(lastSaved)\r\n if (\r\n 'idToken' in processed &&\r\n 'refreshToken' in processed &&\r\n 'timeSkew' in processed &&\r\n 'token' in processed\r\n ) {\r\n return processed\r\n }\r\n }\r\n } catch (e) { }\r\n return {}\r\n }\r\n\r\n private get defaultRedirectUrl(): string {\r\n try {\r\n const baseUrl = document.baseURI\r\n return baseUrl || location.origin\r\n } catch (error) {\r\n return location.origin\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core'\r\nimport { MatDialogRef } from '@angular/material'\r\nimport { AuthKeycloakService } from '../../services/auth-keycloak.service'\r\nimport { ConfigurationsService } from '../../services/configurations.service'\r\nimport { UtilityService } from '../../services/utility.service'\r\nimport { TranslateService } from '@ngx-translate/core'\r\n\r\n@Component({\r\n selector: 'ws-utils-logout',\r\n templateUrl: './logout.component.html',\r\n styleUrls: ['./logout.component.scss'],\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n\r\n disabled = false\r\n isDownloadableIos = false\r\n isDownloadableAndroid = false\r\n constructor(\r\n public dialogRef: MatDialogRef<LogoutComponent>,\r\n private authSvc: AuthKeycloakService,\r\n private configSvc: ConfigurationsService,\r\n private utilitySvc: UtilityService,\r\n private translate: TranslateService\r\n ) {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n // tslint:disable-next-line: no-non-null-assertion\r\n const lang = localStorage.getItem('websiteLanguage') || null!\r\n this.translate.use(lang)\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.configSvc.restrictedFeatures) {\r\n this.isDownloadableIos = !this.configSvc.restrictedFeatures.has('iosDownload')\r\n this.isDownloadableAndroid = !this.configSvc.restrictedFeatures.has('androidDownload')\r\n }\r\n }\r\n\r\n confirmed() {\r\n this.disabled = true\r\n this.dialogRef.close()\r\n if (localStorage.getItem('ratingformID')) {\r\n localStorage.removeItem('ratingformID')\r\n }\r\n if (localStorage.getItem('ratingfeedID')) {\r\n localStorage.removeItem('ratingfeedID')\r\n }\r\n if (localStorage.getItem('platformratingTime')) {\r\n localStorage.removeItem('platformratingTime')\r\n }\r\n if (localStorage.getItem('websiteLanguage')) {\r\n localStorage.removeItem('websiteLanguage')\r\n }\r\n // this.authSvc.logout()\r\n this.authSvc.force_logout()\r\n if (localStorage.getItem('faq')) {\r\n localStorage.removeItem('faq')\r\n }\r\n if (localStorage.getItem('faq-languages')) {\r\n localStorage.removeItem('faq-languages')\r\n }\r\n if (sessionStorage.getItem('hideUpdateProfilePopUp')) {\r\n sessionStorage.removeItem('hideUpdateProfilePopUp')\r\n }\r\n if (localStorage.getItem('motivationalMessage')) {\r\n localStorage.removeItem('motivationalMessage')\r\n }\r\n }\r\n\r\n get isDownloadable() {\r\n if (this.configSvc.instanceConfig && this.configSvc.instanceConfig.isContentDownloadAvailable &&\r\n (this.utilitySvc.iOsAppRef || this.utilitySvc.isAndroidApp)) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { MatButtonModule, MatDialogModule } from '@angular/material'\r\n\r\nimport { LogoutComponent } from './logout.component'\r\nimport { TranslateModule } from '@ngx-translate/core'\r\n\r\n@NgModule({\r\n declarations: [LogoutComponent],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n TranslateModule,\r\n ],\r\n entryComponents: [LogoutComponent],\r\n})\r\nexport class LogoutModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\ninterface IDateRange {\r\n fromDate: Date\r\n toDate: Date\r\n timeZone?: string\r\n}\r\n\r\n@Pipe({\r\n name: 'pipeConciseDateRange',\r\n})\r\nexport class PipeConciseDateRangePipe implements PipeTransform {\r\n transform(dateRange: IDateRange): string {\r\n try {\r\n let conciseRange: string\r\n let prefix: string\r\n let suffix: string\r\n const fromDate = new Date(dateRange.fromDate)\r\n const toDate = new Date(dateRange.toDate)\r\n\r\n const fromDateObj = {\r\n day: fromDate.getDate(),\r\n month: fromDate.toLocaleString('default', { month: 'short' }),\r\n year: fromDate.getFullYear(),\r\n time: fromDate.getTime(),\r\n }\r\n\r\n const toDateObj = {\r\n day: toDate.getDate(),\r\n month: toDate.toLocaleString('default', { month: 'short' }),\r\n year: toDate.getFullYear(),\r\n time: toDate.getTime(),\r\n }\r\n\r\n if (fromDateObj.time === toDateObj.time) {\r\n conciseRange = `${fromDateObj.day} ${fromDateObj.month} ${fromDateObj.year}`\r\n return conciseRange\r\n }\r\n\r\n if (fromDateObj.year !== fromDateObj.year) {\r\n prefix = `${fromDateObj.day} ${fromDateObj.month} ${fromDateObj.year}`\r\n suffix = `${toDateObj.day} ${toDateObj.month} ${toDateObj.year}`\r\n conciseRange = `${prefix} - ${suffix}`\r\n return conciseRange\r\n }\r\n\r\n if (fromDateObj.month === toDateObj.month) {\r\n prefix = `${fromDateObj.day}`\r\n suffix = `${toDateObj.day} ${toDateObj.month} ${toDateObj.year}`\r\n } else {\r\n prefix = `${fromDateObj.day} ${fromDateObj.month}`\r\n suffix = `${toDateObj.day} ${toDateObj.month} ${toDateObj.year}`\r\n }\r\n\r\n conciseRange = `${prefix} - ${suffix}`\r\n return conciseRange\r\n } catch (e) {\r\n return `${dateRange.fromDate} - ${dateRange.toDate}`\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeConciseDateRangePipe } from './pipe-concise-date-range.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeConciseDateRangePipe],\r\n imports: [CommonModule],\r\n exports: [PipeConciseDateRangePipe],\r\n})\r\nexport class PipeConciseDateRangeModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeCountTransform',\r\n})\r\nexport class PipeCountTransformPipe implements PipeTransform {\r\n\r\n transform(value: number): string {\r\n const thousand = 1000\r\n const million = 1000000\r\n if (value > 0) {\r\n if (value < thousand) {\r\n return String(value)\r\n }\r\n if (value >= thousand && value < million) {\r\n const views = (value / thousand).toFixed(1)\r\n if (views.endsWith('0')) {\r\n return `${views.split('.')[0]}K`\r\n }\r\n return `${views}K`\r\n }\r\n {\r\n const views = (value / million).toFixed(1)\r\n if (views.endsWith('0')) {\r\n return `${views.split('.')[0]}M`\r\n }\r\n return `${views}M`\r\n }\r\n }\r\n return '0'\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeCountTransformPipe } from './pipe-count-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeCountTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeCountTransformPipe],\r\n})\r\nexport class PipeCountTransformModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\ninterface ICertificationDate {\r\n day: number\r\n month: number\r\n year: number\r\n timeZone?: string\r\n}\r\n\r\n@Pipe({\r\n name: 'pipeDateConcat',\r\n})\r\nexport class PipeDateConcatPipe implements PipeTransform {\r\n private readonly months: string[]\r\n\r\n constructor() {\r\n this.months = [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec',\r\n ]\r\n }\r\n\r\n transform(value: ICertificationDate): string {\r\n let dateStr = `${value.day} ${this.months[value.month - 1]} ${value.year}`\r\n if (value.timeZone) {\r\n dateStr += ` ${value.timeZone}`\r\n }\r\n\r\n return dateStr\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDateConcatPipe } from './pipe-date-concat.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDateConcatPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDateConcatPipe],\r\n})\r\nexport class PipeDateConcatModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeDurationTransform',\r\n})\r\nexport class PipeDurationTransformPipe implements PipeTransform {\r\n\r\n transform(data: number, type?: 'time24' | 'hms' | 'hour' | 'hms2H' | 'hms2M' | 'day' | 'DAYS'): any {\r\n if (data <= 0) {\r\n return ''\r\n }\r\n const h = Math.floor(data / 3600)\r\n const m = Math.floor((data % 3600) / 60)\r\n const s = Math.floor((data % 3600) % 60)\r\n let duration = ''\r\n switch (type) {\r\n case 'time24':\r\n return this.defaultDuration(h, m, s)\r\n case 'hms':\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'hms2H':\r\n /**to Print HH:mm:ss */\r\n const duration2 = moment.duration(data, 'seconds')\r\n const resultstring = moment.utc(duration2.asMilliseconds()).format('HH:mm:ss')\r\n return resultstring\r\n case 'hms2M': /**to Print mm:ss */\r\n const duration2H = moment.duration(data, 'seconds')\r\n const resultstring2H = moment.utc(duration2H.asMilliseconds()).format('mm:ss')\r\n\r\n return resultstring2H\r\n case 'hour':\r\n if (h === 0) {\r\n duration += 'less than an hour'\r\n }\r\n if (h === 1) {\r\n duration += `${h} hour`\r\n }\r\n if (h > 1) {\r\n duration += `${h} hours`\r\n }\r\n return duration\r\n case 'day':\r\n if (h > 24) {\r\n const duration3 = moment.duration(data, 'seconds')\r\n return `${duration3.days()} day(s)`\r\n }\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'DAYS': duration = `${data}d`\r\n return duration\r\n default:\r\n return this.defaultDuration(h, m, s)\r\n }\r\n }\r\n\r\n defaultDuration(h: number, m: number, s: number) {\r\n let duration = ''\r\n duration += h > 0 ? `${h.toString().padStart(2)}:` : ''\r\n duration += m > 0 ? `${m.toString().padStart(2)}:` : '00:'\r\n duration += s > 0 ? s.toString().padStart(2) : '00'\r\n return duration\r\n }\r\n hmsCalculation(h: number, m: number, s: number, dur: string, type: string) {\r\n let space = ''\r\n let duration = dur\r\n if (h > 0) {\r\n duration += type === 'hms' ? `${h}h` : `${h} hr`\r\n }\r\n if (m > 0) {\r\n if (h > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${m}m` : `${space}${m} min`\r\n }\r\n if (s > 0 && h === 0) {\r\n if (m > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${s}s` : `${space}${s} sec`\r\n }\r\n return duration\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDurationTransformPipe } from './pipe-duration-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDurationTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDurationTransformPipe],\r\n})\r\nexport class PipeDurationTransformModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeHtmlTagRemoval',\r\n})\r\nexport class PipeHtmlTagRemovalPipe implements PipeTransform {\r\n\r\n transform(htmlString: string): string {\r\n return htmlString ? String(htmlString).replace(/<[^>]+>/gm, '') : ''\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeHtmlTagRemovalPipe } from './pipe-html-tag-removal.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeHtmlTagRemovalPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeHtmlTagRemovalPipe],\r\n})\r\nexport class PipeHtmlTagRemovalModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeFilter',\r\n})\r\nexport class PipeFilterPipe implements PipeTransform {\r\n\r\n transform(value: any, keys: string, term: string): string {\r\n if (!term) {\r\n return value\r\n }\r\n return (value || []).filter((item: any) => keys.split(',')\r\n .some(key => item.hasOwnProperty(key) && new RegExp(`^${term}$`, 'gi').test(item[key])))\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeFilterPipe } from './pipe-filter.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeFilterPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeFilterPipe],\r\n})\r\nexport class PipeFilterModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeOrdinal',\n})\nexport class PipeOrdinalPipe implements PipeTransform {\n\n transform(value: number): string {\n if (value === 0) { return '0th' }\n const suffixes = ['th', 'st', 'nd', 'rd']\n const v = value % 100\n return value + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0])\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeOrdinalPipe } from './pipe-ordinal.pipe'\n\n@NgModule({\n declarations: [PipeOrdinalPipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeOrdinalPipe],\n})\nexport class PipeOrdinalModule { }\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeEmail',\n})\nexport class PipeEmailPipe implements PipeTransform {\n\n transform(value: string): any {\n return value.split('.').join('[dot]').replace('@', '[at]')\n\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeEmailPipe } from './pipe-email.pipe'\n\n@NgModule({\n declarations: [PipeEmailPipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeEmailPipe],\n})\nexport class PipeEmailModule { }\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeFilterV2',\r\n})\r\nexport class PipeFilterV2Pipe implements PipeTransform {\r\n\r\n transform(items: [], key: string, searchText: string): any {\r\n if (!items) { return [] }\r\n if (!searchText) { return items }\r\n const searchTextLowerCase = searchText.toLowerCase()\r\n\r\n return items.filter(it => {\r\n return `${it[key]} `.toLowerCase().includes(searchTextLowerCase)\r\n })\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeFilterV2Pipe } from './pipe-filter-v2.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeFilterV2Pipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeFilterV2Pipe],\r\n})\r\nexport class PipeFilterV2Module { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeFilterV3',\n})\nexport class PipeFilterV3Pipe implements PipeTransform {\n\n transform(items: any, filter: any, isAnd: boolean): any {\n if (filter && Array.isArray(items)) {\n const filterKeys = Object.keys(filter)\n if (isAnd) {\n return items.filter(item =>\n filterKeys.reduce((memo: boolean, keyName) =>\n // tslint:disable-next-line: align\n (memo && new RegExp(filter[keyName], 'gi').test(item[keyName])) || filter[keyName] === '', true))\n }\n return items.filter(item => {\n return filterKeys.some(keyName => {\n return new RegExp(filter[keyName], 'gi').test(item[keyName]) || filter[keyName] === ''\n })\n })\n\n }\n return items\n\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeFilterV3Pipe } from './pipe-filter-v3.pipe'\n\n@NgModule({\n declarations: [PipeFilterV3Pipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeFilterV3Pipe],\n})\nexport class PipeFilterV3Module { }\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeFilterSearch',\r\n})\r\nexport class PipeFilterSearchPipe implements PipeTransform {\r\n\r\n transform(items: any[], searchText: string, ...keys: any): any {\r\n if (!items) { return [] }\r\n if (!searchText) { return items }\r\n const searchTextLowerCase = searchText.toLowerCase()\r\n if (keys && keys.length) {\r\n const result = items.filter(it => {\r\n if (it.profileDetails) {\r\n return it['profileDetails']['personalDetails'][keys[0]].toLowerCase().includes(searchTextLowerCase)\r\n }\r\n if (it.personalDetails) {\r\n return it['personalDetails'][keys[0]].toLowerCase().includes(searchTextLowerCase)\r\n }\r\n if (it.fullName) {\r\n return it.fullName.toLowerCase().includes(searchTextLowerCase)\r\n }\r\n // keys.map((key: any) => {\r\n // console.log('key:', key)\r\n // console.log(`it['personalDetails'][key]`, it['personalDetails'][key])\r\n // return it['personalDetails'][key].toLowerCase().includes(searchTextLowerCase)\r\n // })\r\n })\r\n if (result && result.length <= 0) {\r\n return [-1]\r\n }\r\n return result\r\n }\r\n return items.filter(it => {\r\n return it.title.toLowerCase().includes(searchTextLowerCase)\r\n })\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeFilterSearchPipe } from './pipe-filter-search.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeFilterSearchPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeFilterSearchPipe],\r\n})\r\nexport class PipeFilterSearchModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeListFilter',\r\n})\r\nexport class PipeListFilterPipe implements PipeTransform {\r\n\r\n transform(value: any, keys: string, term: string): string {\r\n if (!term) {\r\n return value\r\n }\r\n return (value || []).filter((item: any) => keys.split(',')\r\n .some(key => item.hasOwnProperty(key)\r\n && item[key] && (`${item[key]} `).toLocaleLowerCase().includes(term.toLocaleLowerCase())))\r\n // new RegExp(`^${term}$`, 'gi').test(item[key])\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeListFilterPipe } from './pipe-list-filter.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeListFilterPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeListFilterPipe],\r\n})\r\nexport class PipeListFilterModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeRelativeTime',\r\n})\r\nexport class PipeRelativeTimePipe implements PipeTransform {\r\n transform(value: number): string {\r\n if (value) {\r\n return moment((new Date(value))).fromNow()\r\n }\r\n return moment().startOf('hour').fromNow()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeRelativeTimePipe } from './pipe-relative-time.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeRelativeTimePipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeRelativeTimePipe],\r\n})\r\nexport class PipeRelativeTimeModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport { orderBy } from 'lodash'\r\n\r\n@Pipe({\r\n name: 'orderBy',\r\n})\r\n\r\nexport class OrderByPipe implements PipeTransform {\r\n transform = orderBy\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { OrderByPipe } from './pipe-order-by.pipe'\r\n\r\n@NgModule({\r\n declarations: [OrderByPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [OrderByPipe],\r\n})\r\nexport class PipeOrderByModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipeLimitTo',\r\n})\r\nexport class PipeLimitToPipe implements PipeTransform {\r\n\r\n transform(data: any, limit: number = 5): any {\r\n if (!data || !data.length) {\r\n return null\r\n }\r\n if (Array.isArray(data)) {\r\n return data.slice(0, limit)\r\n }\r\n if (typeof data === 'string') {\r\n const slicedString = data.substr(0, limit)\r\n if (limit < data.length) {\r\n return `${slicedString}...`\r\n }\r\n return slicedString\r\n }\r\n return null\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeLimitToPipe } from './pipe-limit-to.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeLimitToPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeLimitToPipe],\r\n})\r\nexport class PipeLimitToModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\ninterface IUserName {\r\n firstName: string\r\n // lastName: string\r\n email: string\r\n}\r\n\r\n@Pipe({\r\n name: 'pipeNameTransform',\r\n})\r\nexport class PipeNameTransformPipe implements PipeTransform {\r\n\r\n transform(value: IUserName): string {\r\n let result = ''\r\n if (value.firstName) {\r\n result += value.firstName\r\n }\r\n // if (value.lastName && value.lastName !== value.firstName) {\r\n // result += ` ${value.lastName}`\r\n // }\r\n if (result.trim() !== '') {\r\n return result\r\n }\r\n if (value.email) {\r\n return value.email\r\n }\r\n return 'Anonymous User'\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeNameTransformPipe } from './pipe-name-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeNameTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeNameTransformPipe],\r\n})\r\nexport class PipeNameTransformModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipePartialContent',\r\n})\r\nexport class PipePartialContentPipe implements PipeTransform {\r\n\r\n transform(value: any, keys: string[]): any {\r\n const result: { [key: string]: any } = {}\r\n for (const key of keys) {\r\n if (value[key]) {\r\n result[key] = value[key]\r\n }\r\n }\r\n return result\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipePartialContentPipe } from './pipe-partial-content.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipePartialContentPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipePartialContentPipe],\r\n})\r\nexport class PipePartialContentModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser'\r\n\r\n@Pipe({\r\n name: 'pipeSafeSanitizer',\r\n})\r\nexport class PipeSafeSanitizerPipe implements PipeTransform {\r\n\r\n constructor(protected sanitizer: DomSanitizer) { }\r\n public transform(\r\n value: string,\r\n type: string = 'html',\r\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n switch (type) {\r\n case 'html':\r\n return this.sanitizer.bypassSecurityTrustHtml(value)\r\n case 'style':\r\n return this.sanitizer.bypassSecurityTrustStyle(value)\r\n case 'script':\r\n return this.sanitizer.bypassSecurityTrustScript(value)\r\n case 'url':\r\n return this.sanitizer.bypassSecurityTrustUrl(value)\r\n case 'resourceUrl':\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value)\r\n default:\r\n throw new Error(`Invalid safe type specified: ${type}`)\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeSafeSanitizerPipe } from './pipe-safe-sanitizer.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeSafeSanitizerPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeSafeSanitizerPipe],\r\n})\r\nexport class PipeSafeSanitizerModule { }\r\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipePublicURL',\n})\nexport class PipePublicURL implements PipeTransform {\n environment: any\n constructor(@Inject('environment') environment: any) {\n this.environment = environment\n }\n transform(value: string): any {\n // Karmayogi content to be modified with the domain specific url\n // https://portal.karmayogi.nic.in/content-store/content/do_113918818243969024137/artifact/\n // do_113918818243969024137_1699074493067_effectivecommunication1699074492860.jpg\n if (value && value.includes('/content') && value.includes('do_')) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n // CIOS content has direct S3 url like blow, so return same url\n // https://s3.amazonaws.com/ecornell/content/On-Demand/Homepages/Banners/CEPL503-OD3_homepage-banner_v1.jpg\n return value\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipePublicURL } from './pipe-public-URL.pipe'\n\n@NgModule({\n declarations: [PipePublicURL],\n imports: [\n CommonModule,\n ],\n exports: [PipePublicURL],\n})\nexport class PipePublicURLModule { }\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeCertImageURL',\n})\nexport class PipeCertificateImageURL implements PipeTransform {\n environment: any\n constructor(@Inject('environment') environment: any) {\n this.environment = environment\n }\n transform(value: string): any {\n if (value.indexOf(this.environment.contentHost) < 0) {\n if (value.indexOf('/public/content') > -1) {\n if (value.indexOf('/content/content') === -1 || value.indexOf('/content/collection') === -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.certificateassets}/content${mainUrl}`\n return value ? finalURL : ''\n }\n }\n\n if (value.indexOf('/public/content') === -1) {\n if (value.indexOf('/content/content') > -1 || value.indexOf('/igot/content') > -1 || value.indexOf('/content-store/content') > -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotprod/collection') > -1) {\n const mainUrl = value && value.split('/igotprod').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotprod/content') > -1) {\n const mainUrl = value && value.split('/igotprod').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotuat/collection') > -1) {\n const mainUrl = value && value.split('/igotuat').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotuat/content') > -1) {\n const mainUrl = value && value.split('/igotuat').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igot/collection') > -1) {\n const mainUrl = value && value.split('/igot').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igot/content') > -1) {\n const mainUrl = value && value.split('/igot').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igot/profileImage') > -1) {\n const mainUrl = value && value.split('/igot').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotqa/profileImage') > -1) {\n const mainUrl = value && value.split('/igotqa').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotuat/profileImage') > -1) {\n const mainUrl = value && value.split('/igotuat').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/igotprod/profileImage') > -1) {\n const mainUrl = value && value.split('/igotprod').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/content/collection') > -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf('/content/content') === -1 || value.indexOf('/content/collection') === -1) {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n\n if (this.environment && this.environment.bucketName) {\n if (value.indexOf(`/${this.environment.bucketName}/profileImage`) > -1) {\n const mainUrl = value && value.split(`/${this.environment.bucketName}`).pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf(`/${this.environment.bucketName}/content`) > -1) {\n const mainUrl = value && value.split(`/${this.environment.bucketName}`).pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n if (value.indexOf(`/${this.environment.bucketName}/collection`) > -1) {\n const mainUrl = value && value.split(`/${this.environment.bucketName}`).pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}${mainUrl}`\n return value ? finalURL : ''\n }\n }\n\n }\n } else {\n return value\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeCertificateImageURL } from './pipe-certimage-URL.pipe'\n\n@NgModule({\n declarations: [PipeCertificateImageURL],\n imports: [\n CommonModule,\n ],\n exports: [PipeCertificateImageURL],\n})\nexport class PipeCertificateImageURLModule { }\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n@Pipe({\n name: 'PipeNicRelative',\n})\nexport class PipeNicRelativePipe implements PipeTransform {\n environment: any\n constructor(@Inject('environment') environment: any) {\n this.environment = environment\n }\n transform(value: any): string {\n return value ? this.generateUrl(value) : ''\n\n }\n\n generateUrl(oldUrl: string) {\n const chunk = oldUrl ? oldUrl.split('/') : []\n const newChunk = this.environment.azureHost.split('/')\n const newLink = []\n for (let i = 0; i < chunk.length; i += 1) {\n if (i === 2) {\n newLink.push(newChunk[i])\n } else if (i === 3) {\n newLink.push(this.environment.azureBucket)\n } else {\n newLink.push(chunk[i])\n }\n }\n const newUrl = newLink.join('/')\n return newUrl\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeNicRelativePipe } from './pipe-nic-relative.pipe'\n\n@NgModule({\n declarations: [PipeNicRelativePipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeNicRelativePipe],\n})\nexport class PipeNicRelativeModule { }\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipeCourseName',\n})\nexport class PipeCourseNamePipe implements PipeTransform {\n\n transform(value: any) {\n const fullname = value.split(',')\n\n return fullname[1]\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipeCourseNamePipe } from './pipe-coursename.pipe'\n@NgModule({\n declarations: [PipeCourseNamePipe],\n imports: [\n CommonModule,\n ],\n exports: [PipeCourseNamePipe],\n})\nexport class PipeCourseNameModule {\n}\n","import { Injectable } from '@angular/core'\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'\r\nimport { Observable, of } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, catchError } from 'rxjs/operators'\r\nimport { UtilityService } from '../services/utility.service'\r\nimport { ConfigurationsService } from '../services/configurations.service'\r\nimport { IResolveResponse } from './resolver.model'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExploreDetailResolve\r\n implements\r\n Resolve<\r\n | Observable<IResolveResponse<any>>\r\n | IResolveResponse<any>\r\n > {\r\n private baseUrl = this.configSvc.sitePath\r\n isIntranetAllowedSettings = false\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService,\r\n private utilitySvc: UtilityService,\r\n ) { }\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n _state: RouterStateSnapshot,\r\n ): Observable<IResolveResponse<any>> {\r\n this.isIntranetAllowedSettings = this.configSvc.isIntranetAllowed\r\n const tag = decodeURIComponent(route.params.tags)\r\n let url = ''\r\n if (route.data.pageUrl) {\r\n url = route.data.pageUrl\r\n }\r\n if (route.data.pageType === 'page' && route.data.pageKey) {\r\n url = `${this.baseUrl}/page/${route.data.pageKey}.json`\r\n }\r\n return this.http.get(url).pipe(\r\n map(pageData => ({ data: this.transformPageData(pageData, tag), error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }\r\n\r\n private transformPageData(pageData: any, tag: string) {\r\n const DELIMITER = '>'\r\n const path = tag.split(DELIMITER)\r\n pageData.pageLayout.widgetData.widgets = pageData.pageLayout.widgetData.widgets.map((widget: any) => {\r\n if (pageData.navigationBar && pageData.navigationBar.links) {\r\n pageData.navigationBar.links = pageData.navigationBar.links\r\n .filter((link: any) => link.widgetData.tags === tag)\r\n }\r\n\r\n if (widget.widgetSubType === 'cardBreadcrumb') {\r\n widget.widgetData.path = [{\r\n text: pageData.navigationBar.pageTitle,\r\n clickUrl: pageData.navigationBar.pageBackLink,\r\n }].concat(path.map((edge: string, idx: number) => ({\r\n text: edge,\r\n clickUrl: `/page/explore/${path.slice(0, idx + 1).join(DELIMITER)}`,\r\n })))\r\n }\r\n\r\n if (widget.widgetSubType === 'contentStripMultiple') {\r\n widget.widgetData.strips = widget.widgetData.strips.map((strip: any) => {\r\n strip.request.searchV6.filters[0].andFilters.push({ catalogPaths: [tag] })\r\n if (this.utilitySvc.isMobile && !this.isIntranetAllowedSettings) {\r\n strip.request.searchV6.filters[0].andFilters.push({ isInIntranet: ['false'] })\r\n }\r\n return strip\r\n })\r\n if (widget.widgetData.noDataWidget && widget.widgetData.noDataWidget.widgetData.strips) {\r\n widget.widgetData.noDataWidget.widgetData.strips = widget.widgetData.noDataWidget.widgetData.strips.map((strip: any) => {\r\n strip.request.searchV6.filters[0].andFilters.push({ catalogPaths: [tag] })\r\n if (this.utilitySvc.isMobile && !this.isIntranetAllowedSettings) {\r\n strip.request.searchV6.filters[0].andFilters.push({ isInIntranet: ['false'] })\r\n }\r\n return strip\r\n })\r\n }\r\n\r\n }\r\n return widget\r\n })\r\n\r\n return pageData\r\n }\r\n}\r\n","import { ThemePalette } from '@angular/material'\r\nimport { NsAppsConfig } from '../services/configurations.model'\r\nimport { NsWidgetResolver } from '../services/widget-resolver.model'\r\n\r\nexport namespace NsPage {\r\n export interface IPage {\r\n contentType: string\r\n primaryCategory?: string\r\n navigationBar: INavBar\r\n pageLayout: NsWidgetResolver.IRenderConfigWithAnyData\r\n tourGuide?: string[][]\r\n }\r\n\r\n export interface INavBar {\r\n links: NsWidgetResolver.IRenderConfigWithTypedData<INavLink>[]\r\n xsmallNonMenuLinks: NsWidgetResolver.IRenderConfigWithTypedData<INavLink>[]\r\n pageBackLink: string\r\n pageTitle: string\r\n background: INavBackground\r\n }\r\n export interface INavBackground {\r\n color: 'primary' | 'accent' | 'warn' | 'default'\r\n styles: { [id: string]: string }\r\n }\r\n\r\n export interface INavLink {\r\n config: Pick<INavLinkConfig<'card-full' | 'card-small'>, 'type' | 'hideStatus'> |\r\n Pick<INavLinkConfig<'mat-icon-button' | 'mat-fab' | 'mat-mini-fab' | 'card-mini'>, 'type'> |\r\n Pick<INavLinkConfig<'mat-button' | 'mat-raised-button' | 'mat-flat-button' | 'mat-stroked-button'>, 'type' | 'hideIcon' | 'hideTitle'> |\r\n Pick<INavLinkConfig<'mat-menu-item'>, 'type'> |\r\n Pick<INavLinkConfig<'feature-item'>, 'type' | 'useShortName' | 'iconColor' | 'treatAsCard' | 'hidePin'>\r\n actionBtnId?: string\r\n actionBtn?: NsAppsConfig.IFeature\r\n actionBtnName?: string\r\n }\r\n\r\n export interface INavLinkConfig<T> {\r\n type: T\r\n hideIcon?: boolean\r\n hideTitle?: boolean\r\n hideStatus?: boolean\r\n hidePin?: boolean\r\n iconColor?: ThemePalette\r\n treatAsCard?: boolean\r\n useShortName?: boolean\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'\r\nimport { Observable, of } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, catchError } from 'rxjs/operators'\r\nimport { IResolveResponse } from './resolver.model'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MarketingOfferingResolve\r\n implements\r\n Resolve<\r\n | Observable<IResolveResponse<any>>\r\n | IResolveResponse<any>\r\n > {\r\n constructor(\r\n private http: HttpClient,\r\n ) { }\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n _state: RouterStateSnapshot,\r\n ): Observable<IResolveResponse<any>> {\r\n const tag = route.params.tag\r\n return this.http.get(route.data.pageUrl).pipe(\r\n map(pageData => ({ data: this.transformPageData(pageData, tag), error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }\r\n\r\n private transformPageData(pageData: any, tag: string) {\r\n pageData.pageLayout.widgetData.widgets = pageData.pageLayout.widgetData.widgets.map((widget: any) => {\r\n if (widget.widgetSubType === 'contentStripMultiple') {\r\n widget.widgetData.strips = widget.widgetData.strips.map((strip: any) => {\r\n strip.request.search.filters.catalogPaths = [decodeURIComponent(tag)]\r\n return strip\r\n })\r\n }\r\n\r\n return widget\r\n })\r\n\r\n return pageData\r\n }\r\n}\r\n","export const JSON_MAP: any = {\r\n pagename: 'lexid',\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core'\r\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router'\r\nimport { forkJoin, Observable, of, EMPTY } from 'rxjs'\r\nimport { catchError, map, mergeMap } from 'rxjs/operators'\r\nimport { ConfigurationsService } from '../services/configurations.service'\r\nimport { JSON_MAP } from './page.constant'\r\nimport { NsPage } from './page.model'\r\nimport { IResolveResponse } from './resolver.model'\r\nimport { NsContent } from '../services/widget-content.model'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PageResolve implements Resolve<IResolveResponse<NsPage.IPage>> {\r\n private baseUrl = this.configSvc.sitePath\r\n constructor(\r\n private configSvc: ConfigurationsService,\r\n private http: HttpClient,\r\n @Inject(LOCALE_ID) private locale: string,\r\n ) { }\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n ): Observable<IResolveResponse<NsPage.IPage>> | IResolveResponse<NsPage.IPage> {\r\n if (route.data.pageUrl) {\r\n return this.getData(route.data.pageUrl)\r\n }\r\n if (route.data.pageType === 'feature' && route.data.pageKey) {\r\n return this.getData(`${this.baseUrl}/feature/${route.data.pageKey}`)\r\n }\r\n if (\r\n route.data.pageType === 'page' &&\r\n route.data.pageKey &&\r\n route.paramMap.has(route.data.pageKey)\r\n ) {\r\n return this.getData(`${this.baseUrl}/page/${route.paramMap.get(route.data.pageKey)}`)\r\n }\r\n if (\r\n route.data.pageType === 'page' &&\r\n route.data.pageKey &&\r\n (route.data.pageKey === 'toc' || route.data.pageKey === 'home')\r\n ) {\r\n return this.getData(`${this.baseUrl}/page/${route.data.pageKey}`)\r\n }\r\n return {\r\n data: null,\r\n error: 'CONFIGURATION_ERROR_PAGE_URL_NOT_FORMED',\r\n }\r\n }\r\n\r\n private setS3Cookie(_contentId: string): Observable<any> {\r\n // return this.http.post(`/apis/protected/v8/content/setCookie`, { contentId }).pipe(\r\n // catchError(_err => of(true)),\r\n // )\r\n return EMPTY\r\n }\r\n\r\n private getContent(id: string) {\r\n return this.http\r\n .post<NsContent.IContent>(\r\n `/apis/protected/v8/content/${id}?hierarchyType=minimal`,\r\n ['status', 'artifactUrl'],\r\n )\r\n }\r\n\r\n private getData(url: string) {\r\n const id = (url.split('/').pop() as string).split('.')[0] || ''\r\n const equivalentId = id.startsWith('lex_auth_') ? id : JSON_MAP[id]\r\n if (equivalentId) {\r\n return forkJoin([this.setS3Cookie(equivalentId), this.getContent(equivalentId)]).pipe(\r\n mergeMap(([_, v]) => {\r\n if (v.status === 'Expired' || v.status === 'Deleted' || !v.artifactUrl) {\r\n return of({ data: null, error: 'NoContent' })\r\n }\r\n return this.http\r\n .get<NsPage.IPage>(`${v.artifactUrl}?ts=${new Date().getTime()}`)\r\n .pipe(\r\n map(data => ({ data, error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }),\r\n catchError(err => of({ data: null, error: err })),\r\n )\r\n }\r\n const pageRequest = [\r\n (equivalentId ? this.setS3Cookie(equivalentId) : of(true)).pipe(\r\n mergeMap(() =>\r\n this.http.get<NsPage.IPage>(`${url}.json`).pipe(\r\n map(data => ({ data, error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n ),\r\n ),\r\n ),\r\n this.locale === 'en' || this.locale === 'en-US' ?\r\n of({ data: undefined as any, error: null }) :\r\n this.http.get<NsPage.IPage>(`${url}.${this.locale}.json`).pipe(\r\n map(data => ({ data, error: null })),\r\n catchError(err => of({ data: null, error: err })),\r\n ),\r\n ]\r\n return forkJoin(pageRequest).pipe(\r\n map(\r\n ([general, withLocale]): IResolveResponse<NsPage.IPage> => {\r\n if (withLocale.data) {\r\n return withLocale\r\n }\r\n return general\r\n },\r\n ),\r\n )\r\n }\r\n\r\n}\r\n","import { NsPage } from '../resolvers/page.model'\nimport { NsWidgetResolver } from './widget-resolver.model'\nexport namespace NsInstanceConfig {\n export interface IConfig {\n authoring: {\n doUniqueCheck: boolean\n isMultiStepFlow: boolean\n allowExpiry: boolean\n allowRestore: boolean\n allowReview: boolean\n allowPublish: boolean\n allowRedo: boolean\n newDesign: boolean\n allowedContentType: string[]\n urlPatternMatching: {\n allowReplace: boolean\n source: string\n pattern: string\n allowIframe: boolean\n }[]\n }\n appSetup: boolean\n chatBotUrl: string\n defaultFontsize: string\n defaultThemeClass: string\n defaultLocale: string\n disablePidCheck?: boolean\n isMultilingualEnabled?: boolean\n fontSizes: IFontSize[]\n isContentDownloadAvailable: boolean\n indexHtmlMeta: IIndexHtmlMeta\n keycloak: IKeycloak\n locals: ILocalsConfig[]\n microsoft: IMicrosoft\n telemetryConfig: ITelemetryConfig\n themes: ITheme[]\n logos: ILogos\n sources?: ISourceLogo[]\n mailIds: IMailIds\n details: IDetails\n validMailIdExtensionsForMailMe: string[]\n overrideThemeChanges: IOverrideThemeChanges\n defaultFeatureConfigs: {\n error: string\n }\n backgrounds: {\n primaryNavBar: NsPage.INavBackground\n pageNavBar: NsPage.INavBackground\n }\n featuredApps: string[]\n primaryNavBarConfig: IPrimaryNavbarConfig\n org: string[]\n rootOrg: string\n intranetIframeUrls?: string[]\n showNavBarInSetup?: boolean\n intranetUrlToCheck?: string\n introVideo: IPath\n tourVideo: IPath\n isDownloadableSource?: IPath\n isDownloadableIosResource?: IPath\n isDownloadableAndroidResource?: IPath\n sourceFieldsUserAutocomplete?: string[]\n forgotPasswordConfig?: IForgotPassword\n hubs: IHubs[]\n courseContentPath?: string\n portalUrls: IPortalUrls | undefined\n positions: any\n websitelanguages: any[]\n profileTimelyNudges: any,\n npsCategory?: string\n compentency?: any\n }\n export interface IPortalUrls {\n igot: string,\n spv: string,\n mdo: string,\n cbc: string,\n cbp: string,\n frac: string\n }\n export interface IForgotPassword {\n local?: string\n enterprise?: string\n social?: string\n }\n export interface ISourceLogo {\n sourceName?: string\n sourceId?: string\n logo?: string\n }\n export interface IPath {\n [key: string]: string\n }\n export interface IHubs {\n active: boolean\n desc: string\n hubname: string\n icon: string\n path: string,\n order: number\n }\n export interface IIndexHtmlMeta {\n description?: string\n openSearchUrl?: string\n webmanifest: string\n xIcon?: string\n pngIcon?: string\n }\n export interface IFontSize {\n baseFontSize: string\n fontClass: string\n scale: number\n }\n export interface IKeycloak {\n defaultidpHint: 'E' | 'N' | 'S'\n isLoginHidden: boolean\n bearerExcludedUrls: string[]\n clientId: string\n key: string\n realm: string\n url: string\n changePasswordUrl?: string\n onLoad?: 'check-sso' | 'login-required'\n }\n export interface ILocalsConfig {\n isAvailable: boolean\n isEnabled: boolean\n locals: string[]\n path: string\n isRTL: boolean\n }\n export interface IMicrosoft {\n clientId: string\n defaultEmailId: string\n tenant: string\n validEmailExtensions: string[]\n isConfigured: boolean\n }\n export interface ITheme {\n color: IThemeColor\n themeFile: string\n themeClass: string\n themeName: string\n }\n\n export interface IThemeColor {\n accent: string\n primary: string\n warn: string\n }\n export interface IOverrideThemeChanges {\n isEnabled: boolean\n desktop: IDesktop\n mWeb: IMWeb\n }\n export interface IDesktop {\n animationDuration: number\n logoUrl: string\n logoText: string\n logoDisplayTime: number\n backgroundTheme: string\n }\n export interface IMWeb {\n logoUrl: string\n logoText: string\n }\n export interface ILogos {\n app: string\n appTransparent: string\n appSecondary: string\n aboutFooter: string\n aboutHeader: string\n appBottomNav?: string\n company: string\n developedBy: string\n poweredBy: string\n defaultContent?: string\n defaultSourceLogo?: string\n landingLogo: string\n navbarLogo?: string\n playListLogo?: string\n thumpsUp?: string\n\n }\n export interface IMailIds {\n contactUs: string\n default: string\n support: string\n }\n export interface IDetails {\n appName: string\n }\n export interface IPrimaryNavbarConfig {\n mediumScreen: IPrimaryNavBarScreen\n smallScreen: IPrimaryNavBarScreen\n }\n interface IPrimaryNavBarScreen {\n left: IPrimaryNavBarSide[]\n right: IPrimaryNavBarSide[]\n }\n interface IPrimaryNavBarSide {\n type: 'widgetButton' | 'featureButton'\n config: NsWidgetResolver.IRenderConfigWithAnyData | NsPage.INavLink\n }\n\n export interface ITelemetryConfig {\n pdata: {\n id: string\n ver: string\n pid: string\n }\n object: {\n ver: string\n id: string | undefined\n }\n uid: string | null\n authtoken?: string\n env: string\n channel: string\n batchsize: number\n host: string\n endpoint: string\n apislug: string\n sid: string\n publicEndpoint: string\n protectedEndpoint: string\n }\n}\n\nexport namespace NsAppsConfig {\n export type TIconType = 'mat-icon' | 'url'\n\n export interface IAppsConfig {\n groups: IGroup[]\n features: { [id: string]: IFeature }\n tourGuide?: string[][]\n }\n\n export interface IGroup {\n id: string\n iconType: string\n icon: string\n keywords: string[]\n name: string\n toolTip: string\n featureIds: string[]\n stripBackground?: string\n hasRole: string[]\n }\n\n // export interface IGroupWithFeatures extends IGroup {\n // features: IFeature[]\n // }\n export interface IFeature {\n name: string\n id: string\n url: string\n permission: string | string[] | { all: string[]; some: string[]; none: string[] }\n iconType: TIconType\n icon: string\n keywords: string[]\n toolTip: string\n accessKey: string\n status?: 'earlyAccess' | 'live' | 'alpha' | 'beta'\n shortName: string\n description?: string\n badgeEndpoint?: string\n mobileAppFunction?: string\n color?: string\n target?: string\n }\n}\n\nexport namespace NsUser {\n export interface IUserProfile {\n userId: string\n email?: string\n departmentName?: string\n userName?: string\n firstName?: string\n surName?: string\n middleName?: string\n lastName?: string\n rootOrgId?: string\n rootOrgName?: string\n profileImage?: string\n givenName?: string\n country?: null | string\n unit?: string | null\n source_profile_picture?: null | string\n dealerCode?: null | string\n isManager?: boolean\n competencies?: any\n systemTopics?: any\n desiredTopics?: any\n desiredCompetencies?: any\n userRoles?: any\n profileUpdateCompletion?: number\n profileImageUrl?: string\n professionalDetails?: any\n webPortalLang?: any,\n departmentImg?: any\n }\n\n export interface INodebbUserProfile {\n username: string\n email: string\n }\n\n export interface IUserPidProfile {\n kid_updated: boolean\n user: IUser\n }\n\n export interface IUserPidProfileV2 {\n kid_updated: boolean\n result: {\n response: IUserV2\n }\n }\n\n export interface IUserPidProfileVer2 {\n result: {\n UserProfile: IUserVer2\n }\n }\n interface ISourceData {\n GID: string\n SNAMPRE: string\n SNAMADD: string\n LASTNAME: string\n SN: string\n GIVENNAME: string\n NICKNAME: string\n PREFERREDSN: string\n PERSONALTITLE: string\n MOBILE: string\n MAIL: string\n DEPARTMENTTEXT: string\n COSTLOCATIONUNIT: string\n COSTLOCATION: string\n ORGID: string\n MGMTRESP: string\n UTC: string\n CNAMEENG: string\n LNAMEINT: string\n USERTYPE: string\n STATUS: string\n CONTRACTSTATUS: string\n }\n\n interface IUser {\n wid: string\n root_org: string\n org: string\n is_active?: any\n account_expiry_date?: any\n kid: string\n imported_source_name: string\n source_id: string\n username?: any\n first_name: string\n last_name: string\n middle_name?: any\n known_as: string\n salutation?: any\n email: string\n gender?: any\n dob?: any\n languages_known?: any\n preferred_language?: any\n source_profile_picture?: any\n residence_country: string\n residence_state?: any\n residence_city: string\n contact_phone_number_office?: any\n contact_phone_number_home?: any\n contact_phone_number_personal: string\n employement_status?: any\n contract_type?: any\n job_title?: any\n job_role?: any\n department_name: string\n unit_name?: any\n organization_location_country?: any\n organization_location_state?: any\n organization_location_city?: any\n time_inserted: Date\n time_updated: Date\n json_unmapped_fields?: any\n source_data: ISourceData\n }\n interface IRootOrg {\n dateTime: string\n preferredLanguage: string\n keys: {}\n channel: string\n approvedBy: string\n description: string\n updatedDate: string\n addressId: string\n orgType: string\n provider: string\n orgCode: string\n locationId: string\n theme: string\n id: string\n isApproved: boolean\n communityId: string\n slug: string\n email: string\n isSSOEnabled: boolean\n thumbnail: string\n updatedBy: string\n orgName: string\n locationIds: []\n externalId: string\n isRootOrg: boolean\n rootOrgId: string\n imgUrl: string\n approvedDate: string\n orgTypeId: string\n homeUrl: string\n isDefault: boolean\n createdDate: string\n contactDetail: string\n parentOrgId: string\n createdBy: string\n hashTagId: string\n noOfMembers: string\n status: number\n }\n interface IOrg {\n updatedBy: string\n organisationId: string\n orgName: string\n addedByName: string\n addedBy: string\n roles: string[]\n approvedBy: string\n updatedDate: string\n userId: string\n approvaldate: string\n isDeleted: boolean\n parentOrgId: string\n hashTagId: string\n isRejected: boolean\n position: string\n id: string\n orgjoindate: string\n isApproved: boolean\n orgLeftDate: string\n }\n interface IUserV2 {\n surName: any\n maskedPhone: string\n rootOrgName: string\n subject: []\n channel: string\n language: []\n updatedDate: string\n managedBy: string\n flagsValue: number\n id: string\n recoveryEmail: string\n identifier: string\n thumbnail: string\n profileVisibility: []\n updatedBy: string\n accesscode: string\n locationIds: []\n externalIds: []\n registryId: string\n rootOrgId: string\n prevUsedEmail: string\n firstName: string\n tncAcceptedOn: string\n phone: string\n dob: string\n grade: []\n currentLoginTime: string\n userType: string\n status: number\n lastName: string\n gender: string\n roles: string[]\n prevUsedPhone: string\n stateValidated: boolean\n isDeleted: boolean\n organisations: IOrg[]\n countryCode: string\n maskedEmail: string\n tempPassword: string\n email: string\n rootOrg: IRootOrg\n profileSummary: string\n phoneVerified: boolean\n recoveryPhone: string\n userName: string\n userId: string\n lastLoginTime: string\n emailVerified: true\n framework: {}\n createdDate: string\n createdBy: string\n location: string\n tncAcceptedVersion: string\n }\n\n interface IUserVer2 {\n 'firstname': string,\n 'motherTongue': string,\n 'secondaryEmail': string,\n 'gender': string,\n '@type': string,\n 'mobile': number,\n 'middlename': string,\n 'telephone': number,\n 'osid': string,\n 'primaryEmailType': string,\n 'knownLanguages': ILanguages[],\n 'wid': string,\n 'nationality': string,\n 'surname': string,\n 'dob': string,\n 'category': string,\n 'primaryEmail': string,\n 'maritalStatus': string,\n 'residenceAddress': string,\n 'result': any\n }\n export interface ILanguages {\n name: string\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PageNameResolve implements Resolve<any> {\n constructor(\n ) { }\n resolve(\n route: ActivatedRouteSnapshot,\n ): string {\n if (route.data.pageUrl) {\n return route.data.pageUrl\n }\n if (route.data.pageType === 'feature' && route.data.pageKey) {\n return `${route.data.pageKey}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.paramMap.has(route.data.pageKey)\n ) {\n return `${route.paramMap.get(route.data.pageKey)}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.data.pageKey === 'toc'\n ) {\n return `${route.data.pageKey}`\n }\n return 'common module'\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModuleNameResolve implements Resolve<any> {\n moduleName: any = ''\n constructor(\n ) { }\n resolve(\n route: ActivatedRouteSnapshot,\n ): string {\n if (route.data.pageUrl) {\n return route.data.pageUrl\n }\n if (route.data.pageType === 'feature' && route.data.pageKey) {\n return `${route.data.pageKey}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.paramMap.has(route.data.pageKey)\n ) {\n this.moduleName = route.paramMap.get(route.data.pageKey)\n return `${this.moduleName.charAt(0).toUpperCase() + this.moduleName.slice(1)}`\n }\n if (\n route.data.pageType === 'page' &&\n route.data.pageKey &&\n route.data.pageKey === 'toc'\n ) {\n return `${route.data.pageKey}`\n }\n return 'common module'\n }\n}\n","export namespace NsContent {\r\n export interface IContinueLearningData extends IContent {\r\n continueData: any\r\n }\r\n\r\n export interface IContent {\r\n platform?: any\r\n addedOn: string\r\n appIcon: string\r\n artifactUrl: string\r\n averageRating?: any\r\n body?: string\r\n certificationList?: IRelatedContentMeta[]\r\n certificationStatus?: TCertificationStatus\r\n certificationSubmissionDate?: string\r\n certificationUrl: string\r\n children: IContent[]\r\n childrenClassifiers?: string[]\r\n clients?: IClient[]\r\n collections?: IContent[]\r\n complexityLevel: string\r\n contentId: string\r\n contentType: EContentTypes\r\n difficultyLevel: string\r\n primaryCategory: EPrimaryCategory\r\n contentUrlAtSource: string\r\n creatorContacts: ICreator[]\r\n\r\n creatorDetails: ICreator[]\r\n creatorLogo: string\r\n creatorPosterImage: string\r\n creatorThumbnail: string\r\n\r\n curatedTags: string[]\r\n description: string\r\n displayContentType: EDisplayContentTypes // For UI\r\n downloadUrl?: string\r\n duration: number\r\n exclusiveContent?: boolean\r\n expiryDate?: string\r\n equivalentCertifications?: IRelatedContentMeta[]\r\n hasAccess: boolean\r\n hasAssessment?: string\r\n idealScreenSize?: string\r\n identifier: string\r\n introductoryVideo?: string\r\n introductoryVideoIcon?: string\r\n learningTrack?: string\r\n isExternal: boolean\r\n isIframeSupported: 'Yes' | 'No' | 'Maybe'\r\n isInIntranet?: boolean\r\n keywords?: string[]\r\n kArtifacts?: IRelatedContentMeta[]\r\n lastUpdatedOn: string\r\n learningMode?: TLearningMode\r\n learningObjective: string\r\n labels?: string[]\r\n locale?: string\r\n hasTranslations?: { identifier: string; locale: string }[]\r\n isTranslationOf?: { identifier: string; locale: string }[]\r\n me_totalSessionsCount: number\r\n mediaType: string\r\n mimeType: EMimeTypes\r\n miniGOTVersion?: string\r\n msArtifactDetails?: IMSArtifactDetails\r\n mode?: ETagType\r\n name: string\r\n nextCertificationAttemptDate?: string\r\n playgroundInstructions?: string\r\n playgroundResources?: IResourcePlayground[]\r\n postContents?: IPrePostContent[]\r\n posterImage?: string\r\n preContents?: IPrePostContent[]\r\n preRequisites: string\r\n price?: {\r\n currency: string\r\n value: number\r\n }\r\n proctorUrl?: string\r\n progress?: IMarkAsCompleteProgress\r\n programDuration?: any\r\n publishedOn: string\r\n recentCertificationAttemptScore?: number\r\n recommendationReasons?: string[]\r\n region?: string[]\r\n registrationUrl?: string\r\n registrationInstructions?: string\r\n resourceCategory?: string[]\r\n resourceType: string\r\n size?: number\r\n skills: ISkill[]\r\n softwareRequirements?: IResourceDetail[]\r\n sourceName: string\r\n sourceShortName: string\r\n sourceIconUrl?: string\r\n sourceUrl?: string\r\n ssoEnabled?: boolean\r\n status:\r\n | 'Draft'\r\n | 'InReview'\r\n | 'QualityReview'\r\n | 'Reviewed'\r\n | 'Processing'\r\n | 'Live'\r\n | 'Deleted'\r\n | 'MarkedForDeletion'\r\n | 'Expired'\r\n subTitle?: string\r\n subTitles?: ISubtitle[]\r\n studyMaterials?: IRelatedContentMeta[]\r\n systemRequirements?: string[]\r\n tags: ITag[]\r\n topics: IContentTopic[]\r\n totalLikes?: { [key: string]: number }\r\n totalRating?: number\r\n track: ITrack[]\r\n uniqueLearners?: number\r\n viewCount?: { [key: string]: number }\r\n reason?: string // required for Knowledge board\r\n trainingLHubCount?: number // for LHub trainings\r\n verifiers?: {\r\n // required for External Certifications\r\n name: string\r\n email: string\r\n id: string\r\n }[]\r\n references?: { url: string; title: string }[]\r\n resumePage?: number // For player WebModule in UI\r\n [key: string]: any\r\n optionalReading: boolean\r\n additionalTags?: string[]\r\n }\r\n\r\n export enum EPrimaryCategory {\r\n PROGRAM = 'Program',\r\n COURSE = 'Course',\r\n MODULE = 'Course Unit',\r\n RESOURCE = 'Learning Resource',\r\n GOALS = 'GOALS',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n COMP_ASSESSMENT = 'Competency Assessment',\r\n FTB_QUESTION = 'FTB Question',\r\n MTF_QUESTION = 'MTF Question',\r\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\r\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\r\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\r\n BLENDED_PROGRAM = 'Blended Program',\r\n OFFLINE_SESSION = 'Offline Session',\r\n // following will not be available soon\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n CHANNEL = 'Channel',\r\n }\r\n export interface IContentMinimal {\r\n appIcon: string\r\n artifactUrl: string\r\n complexityLevel: string\r\n contentType: EContentTypes\r\n primaryCategory: EPrimaryCategory\r\n description: string\r\n displayContentType?: EDisplayContentTypes\r\n duration: number\r\n identifier: string\r\n hasAccess?: boolean\r\n isInIntranet?: boolean\r\n learningMode?: TLearningMode\r\n mimeType: EMimeTypes\r\n name: string\r\n creatorDetails: ICreator[]\r\n creatorContacts: ICreator[]\r\n PosterImage?: string\r\n resourceType?: string\r\n totalRating?: number\r\n }\r\n\r\n export interface ICollectionHierarchyResponse {\r\n data: IContent\r\n hasMore: boolean\r\n totalContents: number\r\n }\r\n\r\n export interface IRelatedContentMeta {\r\n identifier: string\r\n name: string\r\n }\r\n\r\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt'\r\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed'\r\n\r\n interface IMarkAsCompleteProgress {\r\n progressStatus: 'open' | 'started' | 'completed'\r\n showMarkAsComplete: boolean\r\n markAsCompleteReason: string\r\n progressSupported: boolean\r\n progress: number | null\r\n }\r\n\r\n interface ITag {\r\n id: string\r\n type: string\r\n value: string\r\n }\r\n interface IMSArtifactDetails {\r\n channelId: string\r\n videoId: string\r\n }\r\n interface IClient {\r\n displayName: string\r\n id: string\r\n name: string\r\n }\r\n interface ISubtitle {\r\n srclang: string\r\n label: string\r\n url: string\r\n }\r\n interface IPrePostContent {\r\n identifier: string\r\n name: string\r\n }\r\n interface IResourceDetail {\r\n title?: string\r\n url?: string\r\n }\r\n interface IResourcePlayground {\r\n appIcon: string\r\n artifactUrl: string\r\n identifier: string\r\n name: string\r\n }\r\n interface ITrack {\r\n id: string\r\n name: string\r\n status: string\r\n visibility: string\r\n }\r\n interface ISkill {\r\n id: string\r\n category: string\r\n skill: string\r\n name: string\r\n }\r\n export interface ICreator {\r\n id: string\r\n name: string\r\n email: string\r\n }\r\n export interface IContentTopic {\r\n identifier: string\r\n name: string\r\n }\r\n // API Based\r\n\r\n export interface IContact {\r\n id: string\r\n name: string\r\n email: string\r\n }\r\n\r\n export interface IViewerContinueLearningRequest {\r\n resourceId: string\r\n contextPathId: string\r\n data: string\r\n dateAccessed: number\r\n contextType?: string\r\n }\r\n /**\r\n * @deprecated Enum EContentTypes should not be used in future\r\n */\r\n export enum EContentTypes {\r\n PROGRAM = 'Learning Path',\r\n CHANNEL = 'Channel',\r\n COURSE = 'Course',\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n MODULE = 'Collection',\r\n RESOURCE = 'Resource',\r\n }\r\n export enum EMiscPlayerSupportedCollectionTypes {\r\n PLAYLIST = 'Playlist',\r\n }\r\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\r\n EContentTypes.COURSE,\r\n EContentTypes.MODULE,\r\n EContentTypes.PROGRAM,\r\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\r\n ]\r\n export const KB_SUPPORTED_CONTENT_TYPES: EContentTypes[] = [\r\n EContentTypes.COURSE,\r\n EContentTypes.MODULE,\r\n EContentTypes.PROGRAM,\r\n EContentTypes.RESOURCE,\r\n ]\r\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EContentTypes[] = [\r\n EContentTypes.COURSE,\r\n EContentTypes.MODULE,\r\n EContentTypes.PROGRAM,\r\n EContentTypes.RESOURCE,\r\n ]\r\n export enum EMimeTypes {\r\n COLLECTION = 'application/vnd.ekstep.content-collection',\r\n HTML = 'application/html',\r\n ILP_FP = 'application/ilpfp',\r\n IAP = 'application/iap-assessment',\r\n M4A = 'audio/m4a',\r\n MP3 = 'audio/mpeg',\r\n MP4 = 'video/mp4',\r\n M3U8 = 'application/x-mpegURL',\r\n INTERACTION = 'video/interactive',\r\n PDF = 'application/pdf',\r\n QUIZ = 'application/quiz',\r\n DRAG_DROP = 'application/drag-drop',\r\n HTML_PICKER = 'application/htmlpicker',\r\n WEB_MODULE = 'application/web-module',\r\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\r\n YOUTUBE = 'video/x-youtube',\r\n HANDS_ON = 'application/integrated-hands-on',\r\n RDBMS_HANDS_ON = 'application/rdbms',\r\n CLASS_DIAGRAM = 'application/class-diagram',\r\n CHANNEL = 'application/channel',\r\n COLLECTION_RESOURCE = 'resource/collection',\r\n // Added on UI Only\r\n CERTIFICATION = 'application/certification',\r\n PLAYLIST = 'application/playlist',\r\n QUESTION_SET = 'application/vnd.sunbird.questionset',\r\n QUESTION = 'application/vnd.sunbird.question',\r\n UNKNOWN = 'application/unknown',\r\n OFFLINE_SESSION = 'application/offline',\r\n }\r\n export enum EDisplayContentTypes {\r\n ASSESSMENT = 'ASSESSMENT',\r\n AUDIO = 'AUDIO',\r\n CERTIFICATION = 'CERTIFICATION',\r\n CHANNEL = 'Channel',\r\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\r\n COURSE = 'COURSE',\r\n DEFAULT = 'DEFAULT',\r\n DRAG_DROP = 'DRAG_DROP',\r\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\r\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\r\n GOALS = 'GOALS',\r\n HANDS_ON = 'HANDS_ON',\r\n IAP = 'IAP',\r\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\r\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\r\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\r\n MODULE = 'MODULE',\r\n PDF = 'PDF',\r\n PLAYLIST = 'PLAYLIST',\r\n PROGRAM = 'PROGRAM',\r\n QUIZ = 'QUIZ',\r\n RESOURCE = 'RESOURCE',\r\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\r\n VIDEO = 'VIDEO',\r\n WEB_MODULE = 'WEB_MODULE',\r\n WEB_PAGE = 'WEB_PAGE',\r\n YOUTUBE = 'YOUTUBE',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n }\r\n // for UI\r\n export enum EFilterCategory {\r\n ALL = 'ALL',\r\n LEARN = 'LEARN',\r\n PRACTICE = 'PRACTICE',\r\n ASSESS = 'ASSESS',\r\n }\r\n\r\n // for UI\r\n export enum ETagType {\r\n NEWLY_ADDED = 'NEWLY ADDED',\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\nimport { Observable, of, EMPTY } from 'rxjs'\r\nimport { catchError, retry } from 'rxjs/operators'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { NsContentStripMultiple } from './content-strip-multiple.model'\r\nimport { NsContent } from './widget-content.model'\r\nimport { NSSearch } from './widget-search.model'\r\n\r\n// TODO: move this in some common place\r\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8'\r\n\r\nconst API_END_POINTS = {\r\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\r\n AUTHORING_CONTENT: `/apis/authApi/hierarchy`,\r\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\r\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\r\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\r\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\r\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\r\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\r\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\r\n CONTENT_SEARCH_V6: `${PROTECTED_SLAG_V8}/content/searchV6`,\r\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\r\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\r\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\r\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\r\n COLLECTION_HIERARCHY: (type: string, id: string) =>\r\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\r\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\r\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\r\n EXT_USER_COURSE_ENROLL: (contentId: any) => `/apis/proxies/v8/cios-enroll/v1/readby/useridcourseid/${contentId}`,\r\n EXT_CONTENT_EROLL: `/apis/proxies/v8/cios-enroll/v1/create`,\r\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n/**\r\n * @deprecated this will be depricated\r\n */\r\nexport class WidgetContentService {\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService\r\n ) { }\r\n\r\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\r\n // tslint:disable-next-line\r\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\r\n // return this.http.get(url).toPromise()\r\n if (url) { }\r\n return of().toPromise()\r\n }\r\n\r\n fetchContent(\r\n contentId: string,\r\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\r\n additionalFields: string[] = [],\r\n ): Observable<NsContent.IContent> {\r\n const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\r\n return this.http\r\n .post<NsContent.IContent>(url, { additionalFields })\r\n .pipe(retry(1))\r\n }\r\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\r\n const url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}`\r\n return this.http.get<NsContent.IContent>(url).pipe(retry(1))\r\n }\r\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\r\n return this.http.get<NsContent.IContent[]>(\r\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\r\n )\r\n }\r\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\r\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\r\n `${API_END_POINTS.COLLECTION_HIERARCHY(\r\n type,\r\n id,\r\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\r\n )\r\n }\r\n\r\n fetchContentLikes(contentIds: { content_id: string[] }) {\r\n return this.http\r\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\r\n .toPromise()\r\n }\r\n\r\n fetchContentRatings(contentIds: { contentIds: string[] }) {\r\n if (contentIds) { }\r\n // return this.http\r\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\r\n // .toPromise()\r\n return of().toPromise()\r\n }\r\n\r\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\r\n return this.http.get<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\r\n )\r\n }\r\n\r\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\r\n return new Promise(async resolve => {\r\n if (collectionType &&\r\n collectionType.toLowerCase() === 'playlist') {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({\r\n timestamp: Date.now(),\r\n contextFullPath: [collectionId, id],\r\n }),\r\n dateAccessed: Date.now(),\r\n contextType: 'playlist',\r\n }\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true)\r\n }\r\n )\r\n } else {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({ timestamp: Date.now() }),\r\n dateAccessed: Date.now(),\r\n }\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true)\r\n })\r\n }\r\n })\r\n }\r\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\r\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\r\n // return this.http.post<any>(url, content)\r\n if (content) {\r\n\r\n }\r\n return of() as any\r\n }\r\n\r\n setS3Cookie(\r\n _contentId: string,\r\n // _path: string,\r\n ): Observable<any> {\r\n // return this.http\r\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\r\n // .pipe(catchError(_err => of(true)))\r\n return EMPTY\r\n }\r\n\r\n setS3ImageCookie(): Observable<any> {\r\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)))\r\n }\r\n\r\n fetchManifest(url: string): Observable<any> {\r\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url })\r\n }\r\n fetchWebModuleContent(url: string): Observable<any> {\r\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`)\r\n }\r\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\r\n req.query = req.query || ''\r\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\r\n request: req,\r\n })\r\n }\r\n searchRegionRecommendation(\r\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\r\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\r\n req.query = req.query || ''\r\n req.preLabelValue =\r\n (req.preLabelValue || '') +\r\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '')\r\n req.filters = {\r\n ...req.filters,\r\n labels: [req.preLabelValue || ''],\r\n }\r\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\r\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\r\n { request: req },\r\n )\r\n }\r\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResult> {\r\n req.query = req.query || ''\r\n return this.http.post<NSSearch.ISearchV6ApiResult>(API_END_POINTS.CONTENT_SEARCH_V6, req)\r\n }\r\n\r\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\r\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`)\r\n }\r\n deleteContentRating(contentId: string): Observable<any> {\r\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`)\r\n }\r\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\r\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data)\r\n }\r\n /**\r\n *\r\n * @deprecated this will be depricated.\r\n */\r\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\r\n if (!(content.children || []).length) {\r\n return content\r\n }\r\n if (\r\n content.primaryCategory === 'Program' &&\r\n !(content.artifactUrl && content.artifactUrl.length)\r\n ) {\r\n const child = content.children[0]\r\n return this.getFirstChildInHierarchy(child)\r\n }\r\n if (\r\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\r\n ) {\r\n return content\r\n }\r\n const firstChild = content.children[0]\r\n const resultContent = this.getFirstChildInHierarchy(firstChild)\r\n return resultContent\r\n }\r\n\r\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\r\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise()\r\n }\r\n\r\n fetchConfig(url: string) {\r\n return this.http.get<any>(url)\r\n }\r\n\r\n fetchExtUserContentEnroll(contentId: string) {\r\n return this.http.get<any>(API_END_POINTS.EXT_USER_COURSE_ENROLL(contentId))\r\n }\r\n\r\n extContentEnroll(requestBody: any) {\r\n return this.http.post<any>(`${API_END_POINTS.EXT_CONTENT_EROLL}`, requestBody)\r\n }\r\n\r\n downloadCert(certId: any) {\r\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\n// import { map } from 'rxjs/operators'\n// tslint:disable\nimport _ from 'lodash'\nimport { BehaviorSubject } from 'rxjs'\n// tslint:enable\n\nconst API_END_POINTS = {\n readFeed: (id: string) => `/apis/proxies/v8/user/v1/feed/${id}`,\n getFormID: (id: string) => `/apis/proxies/v8/forms/getFormById?id=${id}`,\n submitForm: `/apis/proxies/v8/forms/v1/saveFormSubmit`,\n deleteFeed: `/apis/proxies/v8/user/feed/v1/delete`,\n}\n\n@Injectable()\nexport class NPSGridService {\n private telemetryEvents = new BehaviorSubject(false)\n updateTelemetryDataObservable = this.telemetryEvents.asObservable()\n\n constructor(private http: HttpClient) { }\n\n updateTelemetryData(state: boolean) {\n this.telemetryEvents.next(state)\n }\n\n getFeedStatus(id: any) {\n return this.http.get<any>(API_END_POINTS.readFeed(id))\n }\n\n getFormData(formid: any) {\n return this.http.get<any>(API_END_POINTS.getFormID(formid))\n }\n\n submitPlatformRating(req: any) {\n return this.http.post<any>(API_END_POINTS.submitForm, req)\n }\n\n deleteFeed(req: any) {\n return this.http.post<any>(API_END_POINTS.deleteFeed, req)\n }\n}\n","import { Inject, Injectable } from '@angular/core'\r\nimport { filter } from 'rxjs/operators'\r\n// import { AuthKeycloakService } from './auth-keycloak.service'\r\nimport { NsInstanceConfig } from './configurations.model'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { WsEvents } from './event.model'\r\nimport { EventService } from './event.service'\r\nimport { LoggerService } from './logger.service'\r\nimport { NsContent } from './widget-content.model'\r\nimport { Router, NavigationStart } from '@angular/router'\r\nimport { NPSGridService } from './nps-grid.service'\r\n\r\ndeclare var $t: any\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TelemetryService {\r\n previousUrl: string | null = null\r\n telemetryConfig: NsInstanceConfig.ITelemetryConfig | null = null\r\n pData: any = null\r\n contextCdata = []\r\n isAnonymousTelemetry = true\r\n telArray: any = []\r\n externalApps: any = {\r\n RBCP: 'rbcp-web-ui',\r\n }\r\n environment: any\r\n constructor(\r\n private configSvc: ConfigurationsService,\r\n private eventsSvc: EventService,\r\n @Inject('environment') environment: any,\r\n // private authSvc: AuthKeycloakService,\r\n private logger: LoggerService,\r\n private router: Router,\r\n private npsSvc: NPSGridService,\r\n ) {\r\n this.environment = environment\r\n const instanceConfig = this.configSvc.instanceConfig\r\n this.navigationStart()\r\n this.initializeConfig(instanceConfig)\r\n this.addPlayerListener()\r\n this.addCustomEventListener()\r\n this.addInteractListener()\r\n this.addFeedbackListener()\r\n this.addTimeSpentListener()\r\n this.addSearchListener()\r\n this.addHearbeatListener()\r\n this.addCustomImpressionListener()\r\n this.addCustomListener()\r\n this.addCustomListenerForGetStart()\r\n this.addCustomListenerForPlatformRating()\r\n }\r\n\r\n private navigationStart() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n if (event.url.includes('/public/') || event.url.includes('&preview=true') || event.url.includes('/certs')) {\r\n this.isAnonymousTelemetry = true\r\n this.updateTelemetryConfig()\r\n const instanceConfig = this.configSvc.instanceConfig\r\n this.initializeConfig(instanceConfig)\r\n }\r\n }\r\n })\r\n }\r\n\r\n get isAnonymousTelemetryRequired(): boolean {\r\n return this.isAnonymousTelemetry\r\n }\r\n\r\n private updateTelemetryConfig() {\r\n if (this.configSvc.instanceConfig && this.configSvc.instanceConfig.telemetryConfig) {\r\n if (this.isAnonymousTelemetryRequired) {\r\n this.configSvc.instanceConfig.telemetryConfig.endpoint = this.configSvc.instanceConfig.telemetryConfig.publicEndpoint\r\n } else {\r\n this.configSvc.instanceConfig.telemetryConfig.endpoint = this.configSvc.instanceConfig.telemetryConfig.protectedEndpoint\r\n }\r\n }\r\n }\r\n\r\n private initializeConfig(instanceConfig: NsInstanceConfig.IConfig | null) {\r\n if (instanceConfig) {\r\n this.telemetryConfig = instanceConfig.telemetryConfig\r\n this.telemetryConfig = {\r\n ...this.telemetryConfig,\r\n pdata: {\r\n ...this.telemetryConfig.pdata,\r\n // pid: navigator.userAgent,\r\n id: `${this.environment.name}.${this.telemetryConfig.pdata.id}`,\r\n },\r\n uid: (this.configSvc.userProfile && this.configSvc.userProfile.userId) ?\r\n this.configSvc.userProfile.userId : '',\r\n // authtoken: this.authSvc.token,\r\n // tslint:disable-next-line: no-non-null-assertion\r\n channel: this.rootOrgId || this.telemetryConfig.channel,\r\n sid: this.getTelemetrySessionId,\r\n }\r\n this.pData = this.telemetryConfig.pdata\r\n }\r\n }\r\n\r\n get getTelemetrySessionId(): string {\r\n return localStorage.getItem('telemetrySessionId') || ''\r\n }\r\n\r\n get rootOrgId(): string {\r\n if (this.configSvc && this.configSvc.userProfile && this.configSvc.userProfile.rootOrgId) {\r\n return this.configSvc.userProfile.rootOrgId\r\n }\r\n return ''\r\n }\r\n\r\n triggerNPSUpdate(data: any) {\r\n this.telArray.push(data)\r\n if (this.telArray && this.telArray.length === 4) {\r\n if (localStorage.getItem('ratingformID')) {\r\n this.telArray = []\r\n this.npsSvc.updateTelemetryData(true)\r\n }\r\n }\r\n }\r\n\r\n start(edata: any, data: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n try {\r\n if (this.telemetryConfig) {\r\n $t.start(\r\n this.telemetryConfig,\r\n (pageContext && pageContext.pageId) ?\r\n pageContext.pageId\r\n : '',\r\n '1.0',\r\n {\r\n // id,\r\n type: edata.type,\r\n mode: edata.mode,\r\n pageid: (pageContext && pageContext.pageId) ?\r\n pageContext.pageId\r\n : '',\r\n duration: 1,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(pageContext && pageContext.module ? { env: pageContext.module } : null),\r\n },\r\n object: {\r\n ...(data) && data,\r\n },\r\n ...(this.configSvc.userProfile && this.configSvc.userProfile.userId ?\r\n null : { actor: { id: 'non-loggedin', type: 'Anonymous User' } }),\r\n }\r\n )\r\n } else {\r\n this.logger.error('Error Initializing Telemetry. Config missing.')\r\n }\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry start', e)\r\n }\r\n }\r\n\r\n end(edata: any, data: any, pageContext?: WsEvents.ITelemetryPageContext) {\r\n try {\r\n $t.end(\r\n {\r\n type: edata.type,\r\n mode: edata.mode,\r\n pageid: (pageContext && pageContext.pageId) ?\r\n pageContext.pageId\r\n : '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(pageContext && pageContext.module ? { env: pageContext.module } : null),\r\n },\r\n object: {\r\n ...(data) && data,\r\n },\r\n },\r\n )\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry end', e)\r\n }\r\n }\r\n\r\n audit(type: string, props: string, data: any) {\r\n try {\r\n $t.audit(\r\n {\r\n type,\r\n props,\r\n // data,\r\n state: data, // Optional. Current State\r\n prevstate: '', // Optional. Previous State\r\n duration: '', // Optional.\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n },\r\n )\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry audit', e)\r\n }\r\n }\r\n\r\n heartbeat(type: string, id: string) {\r\n try {\r\n $t.heartbeat({\r\n id,\r\n // mode,\r\n type,\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry heartbeat', e)\r\n }\r\n }\r\n\r\n impression(data?: any, objectType?: any) {\r\n this.triggerNPSUpdate(data)\r\n try {\r\n const page = this.getPageDetails()\r\n if (data && data.pageContext) {\r\n page.pageid = data.pageContext.pageId\r\n page.module = data.pageContext.module\r\n }\r\n const edata = {\r\n pageid: page.pageid, // Required. Unique page id\r\n type: page.pageUrlParts[0], // Required. Impression type (list, detail, view, edit, workflow, search)\r\n uri: page.pageUrl,\r\n }\r\n if (page.objectId) {\r\n const config = {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n env: page.module || (this.telemetryConfig && this.telemetryConfig.env),\r\n },\r\n object: {\r\n id: page.objectId,\r\n type: objectType,\r\n // This will override above id if the data has object in it.\r\n ...(data && data.object),\r\n },\r\n }\r\n if (!page.objectId || !objectType) {\r\n config.object = {}\r\n }\r\n $t.impression(edata, config)\r\n } else {\r\n $t.impression(edata, {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData && this.pData.id,\r\n },\r\n env: page.module || '',\r\n },\r\n object: {\r\n ...(data && data.object),\r\n },\r\n })\r\n }\r\n this.previousUrl = page.pageUrl\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry impression', e)\r\n }\r\n }\r\n\r\n externalImpression(impressionData: any) {\r\n // this.triggerNPSUpdate(impressionData)\r\n try {\r\n const page = this.getPageDetails()\r\n if (this.externalApps[impressionData.subApplicationName]) {\r\n const externalConfig = page.objectId ? {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[impressionData.subApplicationName],\r\n },\r\n },\r\n object: {\r\n id: page.objectId,\r\n },\r\n } : {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[impressionData.subApplicationName],\r\n },\r\n },\r\n }\r\n $t.impression(impressionData.data, externalConfig)\r\n }\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry externalImpression', e)\r\n }\r\n }\r\n\r\n // for Plartform rating\r\n addCustomListenerForPlatformRating() {\r\n this.eventsSvc.getPREvents$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.PlatformRating &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded\r\n ) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Interact\r\n ) {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.pageContext && event.pageContext.pageId || '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n addCustomListenerForGetStart() {\r\n this.eventsSvc.getStartEvents$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.GetStarted &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded\r\n ) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Interact\r\n ) {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.pageContext && event.pageContext.pageId || '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n addCustomListener() {\r\n this.eventsSvc.chatbotEvents$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Chatbot &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded\r\n ) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Interact\r\n ) {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.pageContext && event.pageContext.pageId || '',\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n addCustomImpressionListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryImpression) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Impression,\r\n ),\r\n )\r\n .subscribe(event => {\r\n try {\r\n // console.log('event.data::', event.data)\r\n this.impression(event.data)\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry impression', e)\r\n }\r\n })\r\n }\r\n\r\n addTimeSpentListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.type === WsEvents.WsTimeSpentType.Page &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n if (event.data.state === WsEvents.EnumTelemetrySubType.Unloaded) {\r\n this.end({\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n {},\r\n event.pageContext\r\n )\r\n }\r\n })\r\n }\r\n\r\n addCustomEventListener() {\r\n\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Loaded &&\r\n event.data.type !== WsEvents.WsTimeSpentType.Player\r\n ) {\r\n this.start(\r\n {\r\n type: event.data.type,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded &&\r\n event.data.type !== WsEvents.WsTimeSpentType.Player\r\n ) {\r\n this.end(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n })\r\n }\r\n addPlayerListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n event =>\r\n event &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.type === WsEvents.WsTimeSpentType.Player &&\r\n event.data.mode &&\r\n event.data,\r\n ),\r\n )\r\n .subscribe(event => {\r\n const content: NsContent.IContent | null = event.data.content\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Loaded &&\r\n (!content ||\r\n (content.isIframeSupported || '').toLowerCase() === 'maybe' ||\r\n (content.isIframeSupported || '').toLowerCase() === 'yes' ||\r\n (content.mimeType === 'application/pdf' || 'application/json'))\r\n ) {\r\n this.start(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n\r\n )\r\n }\r\n if (\r\n event.data.state === WsEvents.EnumTelemetrySubType.Unloaded &&\r\n (!content ||\r\n (content.isIframeSupported || '').toLowerCase() === 'maybe' ||\r\n (content.isIframeSupported || '').toLowerCase() === 'yes' ||\r\n (content.mimeType === 'application/pdf' || 'application/json'))\r\n ) {\r\n this.end(\r\n {\r\n type: event.data.type || WsEvents.WsTimeSpentType.Player,\r\n mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,\r\n },\r\n event.data.object,\r\n event.pageContext\r\n )\r\n }\r\n })\r\n }\r\n\r\n addInteractListener() {\r\n const data = this.getPageDetails()\r\n this.triggerNPSUpdate(data.pageid)\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryInteract) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Interact,\r\n ),\r\n )\r\n .subscribe(event => {\r\n const page = this.getPageDetails()\r\n if (typeof event.from === 'string' && this.externalApps[event.from]) {\r\n const externalConfig = {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[event.from],\r\n },\r\n },\r\n }\r\n try {\r\n $t.interact(event.data, externalConfig)\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry interact', e)\r\n }\r\n } else {\r\n // let interactid\r\n // if (event.data.edata.type === 'goal') {\r\n // interactid = page.pageUrlParts[4]\r\n // }\r\n try {\r\n $t.interact(\r\n {\r\n type: event.data.edata.type,\r\n subtype: event.data.edata.subType,\r\n // object: event.data.object,\r\n id: (event.data.edata && event.data.edata.id) ?\r\n event.data.edata.id\r\n : '',\r\n pageid: event.data.pageContext && event.data.pageContext.pageId || page.pageid,\r\n // target: { page },\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n ...(event.pageContext && event.pageContext.module ? { env: event.pageContext.module } : null),\r\n },\r\n object: {\r\n ...event.data.object,\r\n },\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry interact', e)\r\n }\r\n }\r\n })\r\n }\r\n\r\n addFeedbackListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryFeedback) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Feedback,\r\n ),\r\n )\r\n .subscribe(event => {\r\n const page = this.getPageDetails()\r\n try {\r\n $t.feedback(\r\n {\r\n rating: event.data.object.rating || 0,\r\n commentid: event.data.object.commentid || '',\r\n commenttxt: event.data.object.commenttxt || '',\r\n pageid: page.pageid,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n object: {\r\n id: event.data.object.contentId || event.data.object.id || '',\r\n type: event.data.edata.type || '',\r\n ver: `${(event.data.object.version || '1')}${''}`,\r\n rollup: {},\r\n },\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry interact', e)\r\n }\r\n })\r\n }\r\n\r\n addHearbeatListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetryHeartBeat) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.HeartBeat,\r\n ),\r\n )\r\n .subscribe(event => {\r\n if (typeof event.from === 'string' && this.externalApps[event.from]) {\r\n const externalConfig = {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.externalApps[event.from],\r\n },\r\n },\r\n }\r\n try {\r\n $t.heartbeat(event.data, externalConfig)\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry heartbeat', e)\r\n }\r\n } else {\r\n try {\r\n $t.heartbeat(\r\n {\r\n type: event.data.type,\r\n // subtype: event.data.eventSubType,\r\n id: event.data.id,\r\n // mimeType: event.data.mimeType,\r\n // mode: event.data.mode,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n })\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry heartbeat', e)\r\n }\r\n }\r\n })\r\n }\r\n\r\n addSearchListener() {\r\n this.eventsSvc.events$\r\n .pipe(\r\n filter(\r\n (event: WsEvents.WsEventTelemetrySearch) =>\r\n event &&\r\n event.data &&\r\n event.eventType === WsEvents.WsEventType.Telemetry &&\r\n event.data.eventSubType === WsEvents.EnumTelemetrySubType.Search,\r\n ),\r\n )\r\n .subscribe(event => {\r\n try {\r\n $t.search(\r\n {\r\n query: event.data.query,\r\n filters: event.data.filters,\r\n size: event.data.size,\r\n },\r\n {\r\n context: {\r\n pdata: {\r\n ...this.pData,\r\n id: this.pData.id,\r\n },\r\n },\r\n },\r\n )\r\n } catch (e) {\r\n // tslint:disable-next-line: no-console\r\n console.log('Error in telemetry search', e)\r\n }\r\n })\r\n }\r\n\r\n getPageDetails() {\r\n const path = window.location.pathname.replace('/', '')\r\n const url = path + window.location.search\r\n let moduleValue = ''\r\n if (path.includes('discussion-forum')) {\r\n moduleValue = 'Discuss'\r\n }\r\n return {\r\n pageid: path,\r\n pageUrl: url,\r\n pageUrlParts: path.split('/'),\r\n refferUrl: this.previousUrl,\r\n objectId: this.extractContentIdFromUrlParts(path.split('/')),\r\n module: moduleValue,\r\n }\r\n }\r\n\r\n extractContentIdFromUrlParts(urlParts: string[]) {\r\n // TODO: pick toc and viewer url from some configuration\r\n const tocIdx = urlParts.indexOf('toc')\r\n const viewerIdx = urlParts.indexOf('viewer')\r\n\r\n if (tocIdx === -1 && viewerIdx === -1) {\r\n return null\r\n }\r\n\r\n if (tocIdx !== -1 && tocIdx < urlParts.length - 1) {\r\n return urlParts[tocIdx + 1] // e.g. url /app/toc/<content_id>\r\n }\r\n\r\n if (viewerIdx !== -1 && viewerIdx < urlParts.length - 2) {\r\n return urlParts[viewerIdx + 2] // e.g. url /app/viewer/<content_type>/<content_id>\r\n }\r\n\r\n return null\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { ActivatedRoute, Router } from '@angular/router'\r\nimport { WidgetContentService } from './widget-content.service'\r\n// import { AuthKeycloakService } from './auth-keycloak.service'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { WsEvents } from './event.model'\r\nimport { EventService } from './event.service'\r\nimport { TelemetryService } from './telemetry.service'\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SubapplicationRespondService {\r\n subAppname = ''\r\n continueLearningData: any = null\r\n contentWindowinfo: any\r\n loaded = false\r\n constructor(\r\n private configSvc: ConfigurationsService,\r\n private contentSvc: WidgetContentService,\r\n // private keyCloakSvc: AuthKeycloakService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private eventSvc: EventService,\r\n private teleSvc: TelemetryService,\r\n ) {\r\n this.changeContextrespond()\r\n this.configSvc.prefChangeNotifier.subscribe(() => {\r\n this.changeContextrespond()\r\n })\r\n }\r\n loadedRespond(contentWindow: any, applicationName: string, id?: string) {\r\n if (id && this.activatedRoute.snapshot.queryParams.viewMode && this.activatedRoute.snapshot.queryParams.viewMode === 'RESUME') {\r\n this.continueLearningData = null\r\n this.contentSvc.fetchContentHistory(id).subscribe(\r\n data => {\r\n this.continueLearningData = data.continueData\r\n if (this.configSvc && this.configSvc.userProfile) {\r\n const firstName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[0] : ''\r\n const lastName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[1] : ''\r\n const viewMode: string = this.activatedRoute.snapshot.queryParams.viewMode ?\r\n this.activatedRoute.snapshot.queryParams.viewMode : ''\r\n // const token = this.keyCloakSvc.token\r\n const response = {\r\n subApplicationName: applicationName,\r\n requestId: 'LOADED',\r\n parentContext: {\r\n domainName: window.location.host,\r\n url: this.router.url,\r\n rootOrg: this.configSvc.rootOrg,\r\n theme: this.configSvc.activeThemeObject ? {\r\n name: this.configSvc.activeThemeObject.themeName,\r\n ...this.configSvc.activeThemeObject.color,\r\n } : '',\r\n fontSize: this.configSvc.activeFontObject ? this.configSvc.activeFontObject.baseFontSize : '14px',\r\n locale: (this.configSvc.userPreference && this.configSvc.userPreference.selectedLocale) || 'en',\r\n darkMode: this.configSvc.isDarkMode,\r\n subApplicationStartMode: viewMode.toUpperCase(),\r\n user: {\r\n firstName,\r\n lastName,\r\n // token,\r\n userId: this.configSvc.userProfile.userId ? this.configSvc.userProfile.userId : '',\r\n roles: this.configSvc.userRoles ? Array.from(this.configSvc.userRoles) : [],\r\n },\r\n heartbeatFrequency: '200',\r\n },\r\n data: this.continueLearningData.data ? {\r\n continueLearning: this.continueLearningData.data,\r\n } : null,\r\n }\r\n contentWindow.postMessage(response, '*')\r\n this.contentWindowinfo = contentWindow\r\n this.loaded = true\r\n this.subAppname = applicationName\r\n }\r\n })\r\n } else {\r\n if (this.configSvc && this.configSvc.userProfile) {\r\n const firstName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[0] : ''\r\n const lastName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[1] : ''\r\n const viewMode: string = this.activatedRoute.snapshot.queryParams.viewMode ?\r\n this.activatedRoute.snapshot.queryParams.viewMode : ''\r\n // const token = this.keyCloakSvc.token\r\n const response = {\r\n subApplicationName: applicationName,\r\n requestId: 'LOADED',\r\n parentContext: {\r\n domainName: window.location.host,\r\n url: this.router.url,\r\n rootOrg: this.configSvc.rootOrg,\r\n theme: this.configSvc.activeThemeObject ? {\r\n name: this.configSvc.activeThemeObject.themeName,\r\n ...this.configSvc.activeThemeObject.color,\r\n } : '',\r\n fontSize: this.configSvc.activeFontObject ? this.configSvc.activeFontObject.baseFontSize : '14px',\r\n locale: (this.configSvc.userPreference && this.configSvc.userPreference.selectedLocale) || 'en',\r\n darkMode: this.configSvc.isDarkMode,\r\n subApplicationStartMode: viewMode.toUpperCase(),\r\n user: {\r\n firstName,\r\n lastName,\r\n // token,\r\n userId: this.configSvc.userProfile.userId ? this.configSvc.userProfile.userId : '',\r\n roles: this.configSvc.userRoles ? Array.from(this.configSvc.userRoles) : [],\r\n },\r\n heartbeatFrequency: '200',\r\n },\r\n data: null,\r\n }\r\n contentWindow.postMessage(response, '*')\r\n this.contentWindowinfo = contentWindow\r\n this.loaded = true\r\n this.subAppname = applicationName\r\n }\r\n }\r\n }\r\n continueLearningRespond(id: string, continueLearning: any) {\r\n this.contentSvc.saveContinueLearning(\r\n {\r\n contextPathId: id,\r\n resourceId: id,\r\n data: JSON.stringify({ timestamp: Date.now(), data: continueLearning }),\r\n dateAccessed: Date.now(),\r\n },\r\n )\r\n .toPromise()\r\n .catch()\r\n }\r\n telemetryEvents(tData: any) {\r\n if (tData) {\r\n switch (tData.eventId) {\r\n case 'INTERACT':\r\n this.eventSvc.dispatchEvent<WsEvents.IWsEventTelemetryInteract>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Warn,\r\n data: {\r\n ...tData.data,\r\n eventSubType: WsEvents.EnumTelemetrySubType.Interact,\r\n },\r\n from: tData.subApplicationName,\r\n to: 'Telemetry',\r\n })\r\n break\r\n case 'HEARTBEAT':\r\n this.eventSvc.dispatchEvent<WsEvents.IWsEventTelemetryHeartBeat>({\r\n eventType: WsEvents.WsEventType.Telemetry,\r\n eventLogLevel: WsEvents.WsEventLogLevel.Trace,\r\n data: {\r\n ...tData.data,\r\n eventSubType: WsEvents.EnumTelemetrySubType.HeartBeat,\r\n },\r\n from: tData.subApplicationName,\r\n to: 'Telemetry',\r\n })\r\n break\r\n case 'IMPRESSION':\r\n this.teleSvc.externalImpression(tData.data)\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n }\r\n unsubscribeResponse() {\r\n this.subAppname = ''\r\n this.continueLearningData = null\r\n this.contentWindowinfo = null\r\n this.loaded = false\r\n }\r\n changeContextrespond() {\r\n if (this.loaded && this.contentWindowinfo && this.configSvc && this.configSvc.userProfile && this.subAppname) {\r\n const firstName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[0] : ''\r\n const lastName = this.configSvc.userProfile.userName ?\r\n this.configSvc.userProfile.userName.split(' ', 2)[1] : ''\r\n const viewMode: string = this.activatedRoute.snapshot.queryParams.viewMode ?\r\n this.activatedRoute.snapshot.queryParams.viewMode : ''\r\n // const token = this.keyCloakSvc.token\r\n const response = {\r\n subApplicationName: this.subAppname,\r\n requestId: 'CONTEXT_CHANGE',\r\n parentContext: {\r\n domainName: window.location.host,\r\n url: this.router.url,\r\n rootOrg: this.configSvc.rootOrg,\r\n theme: this.configSvc.activeThemeObject ? {\r\n name: this.configSvc.activeThemeObject.themeName,\r\n ...this.configSvc.activeThemeObject.color,\r\n } : '',\r\n fontSize: this.configSvc.activeFontObject ? this.configSvc.activeFontObject.baseFontSize : '14px',\r\n locale: (this.configSvc.userPreference && this.configSvc.userPreference.selectedLocale) || 'en',\r\n darkMode: this.configSvc.isDarkMode,\r\n subApplicationStartMode: viewMode.toUpperCase(),\r\n user: {\r\n firstName,\r\n lastName,\r\n // token,\r\n userId: this.configSvc.userProfile.userId ? this.configSvc.userProfile.userId : '',\r\n roles: this.configSvc.userRoles ? Array.from(this.configSvc.userRoles) : [],\r\n },\r\n heartbeatFrequency: '200',\r\n },\r\n }\r\n this.contentWindowinfo.postMessage(response, '*')\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { IUserPreference } from './user-preference.model'\r\nimport { ConfigurationsService } from './configurations.service'\r\nimport { debounceTime, retry, catchError } from 'rxjs/operators'\r\nimport { of } from 'rxjs'\r\nconst endpoints = {\r\n userPref: '/apis/protected/v8/user/preference',\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserPreferenceService {\r\n // do changes in the backend and update the store\r\n\r\n constructor(private http: HttpClient, private configurationSvc: ConfigurationsService) { }\r\n\r\n initialize() {\r\n this.configurationSvc.prefChangeNotifier\r\n .pipe(debounceTime(250))\r\n .subscribe((changedUserPref?: Partial<IUserPreference>) => {\r\n if (this.configurationSvc.isAuthenticated) {\r\n this.saveUserPreference(changedUserPref)\r\n }\r\n })\r\n }\r\n\r\n async fetchUserPreference(): Promise<IUserPreference> {\r\n const pref = await this.http.get<IUserPreference>(endpoints.userPref).toPromise()\r\n return pref\r\n }\r\n\r\n async saveUserPreference(changedUserPref?: Partial<IUserPreference>): Promise<boolean> {\r\n try {\r\n if (!changedUserPref) {\r\n return false\r\n }\r\n const newUserPref: IUserPreference = {\r\n ...this.configurationSvc.userPreference,\r\n pinnedApps:\r\n (changedUserPref && changedUserPref.pinnedApps) ||\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.pinnedApps) ||\r\n '',\r\n isDarkMode: this.configurationSvc.isDarkMode,\r\n isRTL: this.configurationSvc.isRTL,\r\n selectedTheme:\r\n (this.configurationSvc.activeThemeObject &&\r\n this.configurationSvc.activeThemeObject.themeClass) ||\r\n '',\r\n selectedFont:\r\n (this.configurationSvc.activeFontObject &&\r\n this.configurationSvc.activeFontObject.fontClass) ||\r\n '',\r\n selectedLangGroup:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.selectedLangGroup) ||\r\n '',\r\n selectedLocale:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.selectedLocale) ||\r\n '',\r\n colorPallet:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.colorPallet) ||\r\n [],\r\n defaultCardType:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.defaultCardType) ||\r\n '',\r\n completedActivity:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.completedActivity) ||\r\n [],\r\n ...(changedUserPref || {}),\r\n completedTour: this.configurationSvc.completedTour,\r\n profileSettings:\r\n (this.configurationSvc.userPreference &&\r\n this.configurationSvc.userPreference.profileSettings) ||\r\n this.configurationSvc.profileSettings,\r\n }\r\n const oldUserPref: IUserPreference | null = this.configurationSvc.userPreference\r\n this.configurationSvc.userPreference = newUserPref\r\n await this.http\r\n .put(endpoints.userPref, newUserPref)\r\n .pipe(\r\n retry(3),\r\n catchError(err => {\r\n this.configurationSvc.userPreference = oldUserPref\r\n return of(err)\r\n }),\r\n )\r\n .toPromise()\r\n return true\r\n } catch (err) {\r\n return false\r\n }\r\n }\r\n}\r\n","import { Type } from '@angular/core'\r\nimport { SafeStyle } from '@angular/platform-browser'\r\ntype TUrl = undefined | 'none' | 'back' | string\r\nexport namespace NsWidgetResolver {\r\n export type UnitPermissionPrimitive = undefined | null | string\r\n export interface IUnitPermissionObject {\r\n all: UnitPermissionPrimitive | string[]\r\n none: UnitPermissionPrimitive | string[]\r\n some: UnitPermissionPrimitive | string[]\r\n }\r\n export type UnitPermission =\r\n | UnitPermissionPrimitive\r\n | string[]\r\n | IUnitPermissionObject\r\n | Pick<IUnitPermissionObject, 'all'>\r\n | Pick<IUnitPermissionObject, 'none'>\r\n | Pick<IUnitPermissionObject, 'some'>\r\n | Exclude<IUnitPermissionObject, 'all'>\r\n | Exclude<IUnitPermissionObject, 'none'>\r\n | Exclude<IUnitPermissionObject, 'some'>\r\n export interface IPermissions {\r\n enabled: boolean\r\n available: boolean\r\n roles?: UnitPermission\r\n features?: UnitPermission\r\n groups?: UnitPermission\r\n }\r\n\r\n export interface IBaseConfig {\r\n widgetType: string\r\n widgetSubType: string\r\n }\r\n\r\n export interface IRegistrationConfig extends IBaseConfig {\r\n component: Type<IWidgetData<any>>\r\n }\r\n\r\n export interface IRegistrationsPermissionConfig extends IBaseConfig {\r\n widgetPermission?: IPermissions\r\n }\r\n\r\n export interface IRenderConfigWithTypedData<T> extends IRegistrationsPermissionConfig {\r\n widgetData: T\r\n widgetInstanceId?: string\r\n widgetHostClass?: string\r\n widgetHostStyle?: { [key: string]: string }\r\n }\r\n export type IRenderConfigWithAnyData = IRenderConfigWithTypedData<any>\r\n export interface IWidgetData<T>\r\n extends Omit<IRenderConfigWithTypedData<T>, 'widgetPermission' | 'widgetHostStyle'> {\r\n widgetSafeStyle?: SafeStyle\r\n updateBaseComponent: (\r\n widgetType: string,\r\n widgetSubType: string,\r\n widgetInstanceId?: string,\r\n widgetHostClass?: string,\r\n widgetSafeStyle?: SafeStyle,\r\n ) => void\r\n }\r\n export interface ITitle {\r\n title: string,\r\n url: TUrl,\r\n icon?: string\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\nimport { Injectable } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { ConfigurationsService } from './configurations.service'\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class MultilingualTranslationsService {\n selectedLang = ''\n // website lang change\n languageSelected = new BehaviorSubject(true)\n languageSelectedObservable = this.languageSelected.asObservable()\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch'\n\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\n // this.getLanguage()\n }\n\n getLanguage() {\n if (this.configSvc.unMappedUser) {\n if (this.configSvc.unMappedUser.profileDetails &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang\n this.translate.use(lang)\n localStorage.setItem('websiteLanguage', lang)\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'))\n lang = lang.replace(/\\\"/g, '')\n this.translate.use(lang)\n } else {\n this.translate.setDefaultLang('en')\n localStorage.setItem('websiteLanguage', 'en')\n }\n }\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'))\n lang = lang.replace(/\\\"/g, '')\n this.translate.use(lang)\n }\n }\n }\n\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\n let nlabel = label\n nlabel = nlabel && nlabel.replace(/\\s/g, '')\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype\n return this.translate.instant(translationKey)\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel\n return this.translate.instant(translationKeyn)\n }\n\n translateLabel(label: string, type: any, subtype: any) {\n let nlabel = label\n nlabel = nlabel.toLowerCase()\n const sl = nlabel.split(' ')\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1)\n }\n })\n nlabel = sl.join('')\n nlabel = nlabel.replace(/\\s/g, '')\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype\n return this.translate.instant(translationKey)\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel\n return this.translate.instant(translationKeyn)\n }\n\n translateActualLabel(label: string, type: any, subtype: any) {\n let nlabel = label\n const sl = nlabel.split(' ')\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1)\n }\n })\n nlabel = sl.join('')\n nlabel = nlabel.replace(/\\s/g, '')\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype\n return this.translate.instant(translationKey)\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel\n return this.translate.instant(translationKeyn)\n }\n\n editProfileDetailsAPI(data: any) {\n return this.http.post<any>(this.editProfileDetails, data)\n }\n\n updatelanguageSelected(state: any, lang: any, userid: any) {\n this.languageSelected.next(state)\n this.translate.use(lang)\n this.selectedLang = lang\n\n if (userid) {\n const reqUpdates = {\n request: {\n userId: userid,\n profileDetails: {\n additionalProperties: {\n webPortalLang: this.selectedLang,\n },\n },\n },\n }\n this.editProfileDetailsAPI(reqUpdates).subscribe()\n }\n }\n}\n","export enum EFeatures {\r\n // Playlists\r\n PLAYLIST = 'playlist',\r\n PLAYLIST_CREATE = 'playlistCreate',\r\n PLAYLIST_ADD_NEW_CONTENT = 'playlistAddNewContent',\r\n PLAYLIST_REMOVE_EXISTING_CONTENT = 'playlistRemoveExistingContent',\r\n PLAYLIST_DELETE = 'playlistDelete',\r\n PLAYLIST_SHARE = 'playlistShare',\r\n\r\n // Goals\r\n GOAL = 'goal',\r\n GOAL_CREATE_OWN = 'goalCreateOwn',\r\n GOAL_CREATE_SUGGESTED = 'goalCreateSuggested',\r\n GOAL_EDIT_EXISTING_GOAL = 'goalEditExistingGoal',\r\n GOAL_DELETE_EXISTING_GOAL = 'goalDeleteExistingGoal',\r\n GOAL_SHARE_GOAL_WITH_OTHERS = 'goalShareGoalWithOthers',\r\n GOAL_VIEW_ALL_GOALS_SECTION = 'goalViewAllGoalsSection',\r\n GOAL_VIEW_IN_PROGRESS_GOALS_SECTION = 'goalViewInProgressGoalsSection',\r\n GOAL_VIEW_COMPLETED_GOALS_SECTION = 'goalViewCompletedGoalsSection',\r\n\r\n // Navigator\r\n NAVIGATOR = 'navigator',\r\n NAVIGATOR_VIEW_NAVIGATOR_CAROUSEL = 'navigatorViewNavigatorCarousel',\r\n NAVIGATOR_VIEW_ROLES_PAGE = 'navigatorViewRolesPage',\r\n NAVIGATOR_SELECT_ANY_PILLAR = 'navigatorSelectAnyPillar',\r\n NAVIGATOR_PURSUE_ANY_OFFERING = 'navigatorPursueAnyOffering',\r\n NAVIGATOR_CREATE_GOAL_FROM_OFFERING = 'navigatorCreateGoalFromOffering',\r\n NAVIGATOR_VIEW_EXPLORE_PAGE = 'navigatorViewExplorePage',\r\n NAVIGATOR_SELECT_ANY_LEARNING_PATH = 'navigatorSelectAnyLearningPath',\r\n NAVIGATOR_CREATE_GOAL_FROM_LEARNING_PATH = 'navigatorCreateGoalFromLearningPath',\r\n NAVIGATOR_VIEW_SUGGESTIONS_PAGE = 'navigatorViewSuggestionsPage',\r\n NAVIGATOR_SELECT_SUGGESTED_TOPICS = 'navigatorSelectSuggestedTopics',\r\n NAVIGATOR_GET_SUGGESTIONS_OF_SELECTED_TOPICS = 'navigatorGetSuggestionsOfSelectedTopics',\r\n NAVIGATOR_CREATE_GOAL_FROM_SELECTED_LEARNING_PATHS = 'navigatorCreateGoalFromSelectedLearningPaths',\r\n NAVIGATOR_VIEW_INDUSTRIES_PAGE = 'navigatorViewIndustriesPage',\r\n NAVIGATOR_VIEW_CME_PAGE = 'navigatorViewCmePage',\r\n NAVIGATOR_SELECT_SUBDOMAIN = 'navigatorSelectSubdomain',\r\n NAVIGATOR_SELECT_PILLAR = 'navigatorSelectPillar',\r\n NAVIGATOR_SELECT_THEME = 'navigatorSelectTheme',\r\n NAVIGATOR_VIEW_CPG_PAGE = 'navigatorViewCpgPage',\r\n NAVIGATOR_VIEW_ENERGY_PAGE = 'navigatorViewEnergyPage',\r\n NAVIGATOR_VIEW_FINANCIAL_SERVICES_PAGE = 'navigatorViewFinancialServicesPage',\r\n NAVIGATOR_VIEW_HEALTH_CARE_PAGE = 'navigatorViewHealthCarePage',\r\n NAVIGATOR_VIEW_INSURANCE_PAGE = 'navigatorViewInsurancePage',\r\n NAVIGATOR_VIEW_LIFE_SCIENCES_PAGE = 'navigatorViewLifeSciencesPage',\r\n NAVIGATOR_VIEW_MFG_PAGE = 'navigatorViewMfgPage',\r\n NAVIGATOR_VIEW_RETAIL_PAGE = 'navigatorViewRetailPage',\r\n NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_PAGE = 'navigatorViewTravelAndHospitalityPage',\r\n NAVIGATOR_VIEW_UTILITIES_PAGE = 'navigatorViewUtilitiesPage',\r\n NAVIGATOR_VIEW_CME_ANALYTICS = 'navigatorViewCmeAnalytics',\r\n NAVIGATOR_VIEW_GPG_ANALYTICS = 'navigatorViewGpgAnalytics',\r\n NAVIGATOR_VIEW_ENERGY_ANALYTICS = 'navigatorViewEnergyAnalytics',\r\n NAVIGATOR_VIEW_FINANCIAL_SERVICES_ANALYTICS = 'navigatorViewFinancialServicesAnalytics',\r\n NAVIGATOR_VIEW_HEALTH_CARE_ANALYTICS = 'navigatorViewHealthCareAnalytics',\r\n NAVIGATOR_VIEW_INSURANCE_ANALYTICS = 'navigatorViewInsuranceAnalytics',\r\n NAVIGATOR_VIEW_LIFE_SCIENCES_ANALYTICS = 'navigatorViewLifeSciencesAnalytics',\r\n NAVIGATOR_VIEW_MFG_ANALYTICS = 'navigatorViewMfgAnalytics',\r\n NAVIGATOR_VIEW_RETAIL_ANALYTICS = 'navigatorViewRetailAnalytics',\r\n NAVIGATOR_VIEW_TRAVEL_AND_HOSPITALITY_ANALYTICS = 'navigatorViewTravelAndHospitalityAnalytics',\r\n NAVIGATOR_VIEW_UTILITIES_ANALYTICS = 'navigatorViewUtilitiesAnalytics',\r\n NAVIGATOR_VIEW_PILLARS_PAGE = 'navigatorViewPillarsPage',\r\n NAVIGATOR_VIEW_DIFFERENT_COURSES_IN_PILLAR = 'navigatorViewDifferentCoursesInPillar',\r\n NAVIGATOR_VIEW_FULL_STACK_PAGE = 'navigatorViewFullStackPage',\r\n NAVIGATOR_VIEW_DIFFERENT_FULL_STACK_PROGRAMS = 'navigatorViewDifferentFullStackPrograms',\r\n\r\n // Catalog\r\n CATALOG = 'catalog',\r\n CATALOG_VIEW_CATALOG_LIST = 'catalogViewCatalogList',\r\n CATALOG_SELECT_ITEM_FROM_CATALOG_LIST = 'catalogSelectItemFromCatalogList',\r\n CATALOG_VIEW_PROGRAMS_STRIP = 'catalogViewProgramsStrip',\r\n CATALOG_VIEW_COURSES_STRIP = 'catalogViewCoursesStrip',\r\n CATALOG_VIEW_LEARNING_MODULES_STRIP = 'catalogViewLearningModulesStrip',\r\n CATALOG_VIEW_RESOURCES_STRIP = 'catalogViewResourcesStrip',\r\n\r\n // Marketing Page\r\n MARKETING_PAGE = 'marketingPage',\r\n MARKETING_PAGE_VIEW_BRAND_ASSETS_PAGE = 'marketingPageViewBrandAssetsPage',\r\n MARKETING_PAGE_VIEW_CORPORATE_STRIP = 'marketingPageViewCorporateStrip',\r\n MARKETING_PAGE_VIEW_EMPLOYEE_STRIP = 'marketingPageViewEmployeeStrip',\r\n MARKETING_PAGE_VIEW_EXPERIMENTAL_SHOWCASE_PAGE = 'marketingPageViewExperimentalShowcasePage',\r\n MARKETING_PAGE_VIEW_HUBS_PAGE = 'marketingPageViewHubsPage',\r\n MARKETING_PAGE_VIEW_CONNECTICUT_STRIP = 'marketingPageViewConnecticutStrip',\r\n MARKETING_PAGE_VIEW_INDIANA_STRIP = 'marketingPageViewIndianaStrip',\r\n MARKETING_PAGE_VIEW_RHODE_ISLAND_STRIP = 'marketingPageViewRhodeIslandStrip',\r\n MARKETING_PAGE_VIEW_CLIENT_STORIES_PAGE = 'marketingPageViewClientStoriesPage',\r\n MARKETING_PAGE_VIEW_AGILE_SCALE_AT_DIGITAL_STRIP = 'marketingPageViewAgileScaleAtDigitalStrip',\r\n MARKETING_PAGE_VIEW_AI_POWERED_CORE_STRIP = 'marketingPageViewAiPoweredCoreStrip',\r\n MARKETING_PAGE_VIEW_ALWAYS_ON_LEAVING_STRIP = 'marketingPageViewAlwaysOnLeavingStrip',\r\n MARKETING_PAGE_VIEW_SERVICES_PAGE = 'marketingPageViewServicesPage',\r\n MARKETING_PAGE_VIEW_SERVICES_PENTAGON = 'marketingPageViewServicesPentagon',\r\n MARKETING_PAGE_VIEW_OFFERINGS_LIST = 'marketingPageViewOfferingsList',\r\n MARKETING_PAGE_SELECT_ANY_OFFERING = 'marketingPageSelectAnyOffering',\r\n MARKETING_PAGE_SELECT_ANY_PILLAR_FROM_PENTAGON = 'marketingPageSelectAnyPillarFromPentagon',\r\n MARKETING_PAGE_VIEW_INDUSTRIES_PAGE = 'marketingPageViewIndustriesPage',\r\n MARKETING_PAGE_VIEW_INDUSTRIES_LIST = 'marketingPageViewIndustriesList',\r\n MARKETING_PAGE_SELECT_ANY_INDUSTRY = 'marketingPageSelectAnyIndustry',\r\n MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_PAGE = 'marketingPageViewProductAndSubsidiariesPage',\r\n MARKETING_PAGE_VIEW_PRODUCT_AND_SUBSIDIARIES_LIST = 'marketingPageViewProductAndSubsidiariesList',\r\n MARKETING_PAGE_SELECT_ANY_PRODUCT_AND_SUBSIDIARY = 'marketingPageSelectAnyProductAndSubsidiary',\r\n\r\n // Interests\r\n INTERESTS = 'interests',\r\n INTERESTS_ADD_INTERESTS_FROM_SEARCH = 'interestsAddInterestsFromSearch',\r\n INTERESTS_ADD_INTERESTS_FROM_OUR_SUGGESTIONS_SECTION = 'interestsAddInterestsFromOurSuggestionsSection',\r\n INTERESTS_REMOVE_INTERESTS_FROM_MY_INTERESTS_SECTION = 'interestsRemoveInterestsFromMyInterestsSection',\r\n INTERESTS_VIEW_INTERESTS_SEARCH_FIELD = 'interestsViewInterestsSearchField',\r\n INTERESTS_VIEW_MY_INTERESTS_SECTION = 'interestsViewMyInterestsSection',\r\n INTERESTS_VIEW_OWN_SUGGESTIONS_SECTION = 'interestsViewOwnSuggestionsSection',\r\n INTERESTS_VIEW_MORE_SUGGESTIONS_BUTTON = 'interestsViewMoreSuggestionsButton',\r\n\r\n // Feedback\r\n FEEDBACK = 'feedback',\r\n FEEDBACK_VIEW_PLATFORM_FEEDBACK_SECTION = 'feedbackViewPlatformFeedbackSection',\r\n FEEDBACK_STAR_RATING_FOR_PLATFORM = 'feedbackStarRatingForPlatform',\r\n FEEDBACK_WRITE_PLATFORM_FEEDBACK = 'feedbackWritePlatformFeedback',\r\n FEEDBACK_RESET_PLATFORM_FEEDBACK = 'feedbackResetPlatformFeedback',\r\n FEEDBACK_SUBMIT_PLATFORM_FEEDBACK = 'feedbackSubmitPlatformFeedback',\r\n FEEDBACK_VIEW_CONTENT_FEEDBACK_SECTION = 'feedbackViewContentFeedbackSection',\r\n FEEDBACK_STAR_RATING_FOR_CONTENT = 'feedbackStarRatingForContent',\r\n FEEDBACK_WRITE_CONTENT_FEEDBACK = 'feedbackWriteContentFeedback',\r\n FEEDBACK_RESET_CONTENT_FEEDBACK = 'feedbackResetContentFeedback',\r\n FEEDBACK_SUBMIT_CONTENT_FEEDBACK = 'feedbackSubmitContentFeedback',\r\n FEEDBACK_VIEW_ISSUE_REPORTING_SECTION = 'feedbackViewIssueReportingSection',\r\n FEEDBACK_WRITING_ISSUE = 'feedbackWritingIssue',\r\n FEEDBACK_RESET_ISSUE = 'feedbackResetIssue',\r\n FEEDBACK_SUBMIT_ISSUE = 'feedbackSubmitIssue',\r\n\r\n // Contact Us\r\n CONTACT_US = 'contactUs',\r\n CONTACT_US_VIEW_RAISE_AHD_SECTION = 'contactUsViewRaiseAhdSection',\r\n CONTACT_US_VIEW_MAIL_US_SECTION = 'contactUsViewMailUsSection',\r\n CONTACT_US_VIEW_TALK_TO_US_SECTION = 'contactUsViewTalkToUsSection',\r\n CONTACT_US_RAISE_AHD = 'contactUsRaiseAhd',\r\n CONTACT_US_WRITE_EMAIL = 'contactUsWriteEmail',\r\n CONTACT_US_DIAL_FROM_PHONE = 'contactUsDialFromPhone',\r\n\r\n // FAQs\r\n FAQ = 'faq',\r\n FAQ_VIEW_LOGIN_FAQS = 'faqViewLoginFaqs',\r\n FAQ_VIEW_ODC_ACCESS_FAQS = 'faqViewOdcAccessFaqs',\r\n FAQ_VIEW_COMPATIBILITY_FAQS = 'faqViewCompatibilityFaqs',\r\n FAQ_VIEW_INSTALLATION_FAQS = 'faqViewInstallationFaqs',\r\n FAQ_VIEW_PROGRESS_COMPLETION_FAQS = 'faqViewProgressCompletionFaqs',\r\n FAQ_VIEW_VIDEO_FAQS = 'faqViewVideoFaqs',\r\n FAQ_VIEW_AUTHORING_FAQS = 'faqViewAuthoringFaqs',\r\n\r\n // Mobile Apps\r\n MOBILE_APPS = 'mobileApps',\r\n MOBILE_APPS_VIEW_ANDROID_APP_SECTION = 'mobileAppsViewAndroidAppSection',\r\n MOBILE_APPS_DOWNLOAD_APP_FROM_PLAY_STORE = 'mobileAppsDownloadAppFromPlayStore',\r\n MOBILE_APPS_DOWNLOAD_APP_FROM_OUR_SERVER = 'mobileAppsDownloadAppFromOurServer',\r\n MOBILE_APPS_VIEW_QR_CODE_FOR_ANDROID_APP = 'mobileAppsViewQrCodeForAndroidApp',\r\n MOBILE_APPS_VIEW_IOS_APP_SECTION = 'mobileAppsViewIosAppSection',\r\n MOBILE_APPS_DOWNLOAD_IOS_APP = 'mobileAppsDownloadIosApp',\r\n MOBILE_APPS_VIEW_QR_CODE_FOR_IOS_APP = 'mobileAppsViewQrCodeForIosApp',\r\n\r\n // About Us\r\n ABOUT_US = 'aboutUs',\r\n ABOUT_US_VIEW_ABOUT_US_PAGE_SECTIONS = 'aboutUsViewAboutUsPageSections',\r\n\r\n // Settings\r\n SETTINGS = 'settings',\r\n SETTINGS_VIEW_LANGUAGE_SECTION = 'settingsViewLanguageSection',\r\n SETTINGS_VIEW_FONT_SIZE_SECTION = 'settingsViewFontSizeSection',\r\n SETTINGS_VIEW_THEME_SECTION = 'settingsViewThemeSection',\r\n SETTINGS_CHANGE_LANGUAGE = 'settingsChangeLanguage',\r\n SETTINGS_CHANGE_FONT_SIZE = 'settingsChangeFontSize',\r\n SETTINGS_CHANGE_THEME = 'settingsChangeTheme',\r\n\r\n // Login Page\r\n LOGIN_PAGE = 'loginPage',\r\n LOGIN_PAGE_LOGIN_FOR_INFOSCIONS = 'loginPageLoginForInfoscions',\r\n LOGIN_PAGE_LOGIN_FOR_SUBSIDIARIES = 'loginPageLoginForSubsidiaries',\r\n LOGIN_PAGE_LOGIN_FOR_NEW_RECRUITS = 'loginPageLoginForNewRecruits',\r\n LOGIN_PAGE_ABOUT_US = 'loginPageAboutUs',\r\n LOGIN_PAGE_TERMS_OF_USE = 'loginPageTermsOfUse',\r\n LOGIN_PAGE_FAQS = 'loginPageFaqs',\r\n LOGIN_PAGE_CONTACT_US = 'loginPageContactUs',\r\n\r\n // TOC Page\r\n TOC_PAGE = 'tocPage',\r\n TOC_PAGE_VIEW_OVERVIEW_SECTION = 'tocPageViewOverviewSection',\r\n TOC_PAGE_VIEW_INSTRUCTOR_LED_SECTION = 'tocPageViewInstructorLedSection',\r\n TOC_PAGE_VIEW_COHORTS_SECTION = 'tocPageViewCohortsSection',\r\n TOC_PAGE_VIEW_DISCUSSION_FORUM_SECTION = 'tocPageViewDiscussionForumSection',\r\n TOC_PAGE_VIEW_COURSE_ANALYTICS_SECTION = 'tocPageViewCourseAnalyticsSection',\r\n TOC_PAGE_VIEW_WHATS_NEXT_SECTION = 'tocPageViewWhatsNextSection',\r\n TOC_PAGE_VIEW_PART_OF_SECTION = 'tocPageViewPartOfSection',\r\n TOC_PAGE_REGISTER_FOR_UPCOMING_TRAINING = 'tocPageRegisterForUpcomingTraining',\r\n TOC_PAGE_UNREGISTER_FROM_REGISTERED_TRAINING = 'tocPageUnregisterFromRegisteredTraining',\r\n TOC_PAGE_SHARE_INSTRUCTOR_LED_TRAININGS = 'tocPageShareInstructorLedTrainings',\r\n TOC_PAGE_VIEW_EDUCATORS_OF_TRAININGS = 'tocPageViewEducatorsOfTrainings',\r\n TOC_PAGE_NOMINATE_OTHERS_FOR_TRAININGS = 'tocPageNominateOthersForTrainings', // Applicable only for JL6 and above.\r\n TOC_PAGE_REQUEST_TRAINING = 'tocPageRequestTraining', // Applicable only for JL6 and above.\r\n TOC_PAGE_VIEW_ACTIVE_LEARNERS_SECTION = 'tocPageViewActiveLearnersSection',\r\n TOC_PAGE_VIEW_ALL_ACTIVE_LEARNERS = 'tocPageViewAllActiveLearners',\r\n TOC_PAGE_VIEW_CURRENTLY_ACTIVE_LEARNERS = 'tocPageViewCurrentlyActiveLearners',\r\n TOC_PAGE_VIEW_LEARNERS_SHARING_THE_SAME_GOALS = 'tocPageViewLearnersSharingTheSameGoals',\r\n TOC_PAGE_VIEW_EXPERTS_AND_TUTORS_SECTION = 'tocPageViewExpertsAndTutorsSection',\r\n TOC_PAGE_VIEW_ALL_EXPERTS_AND_TUTORS = 'tocPageViewAllExpertsAndTutors',\r\n TOC_PAGE_VIEW_AUTHORS_OF_COURSE = 'tocPageViewAuthorsOfCourse',\r\n TOC_PAGE_VIEW_EDUCATORS_OF_COURSE = 'tocPageViewEducatorsOfCourse',\r\n TOC_PAGE_VIEW_TOPPERS_OF_COURSE = 'tocPageViewToppersOfCourse',\r\n TOC_PAGE_MAIL_THE_PERSON = 'tocPageMailThePerson',\r\n TOC_PAGE_CALL_THE_PERSON = 'tocPageCallThePerson',\r\n TOC_PAGE_POST_VIEWS_IN_DISCUSSION_FORUM = 'tocPagePostViewsInDiscussionForum',\r\n TOC_PAGE_LEARN_THE_COURSE = 'tocPageLearnTheCourse',\r\n TOC_PAGE_LIKE_THE_COURSE = 'tocPageLikeTheCourse',\r\n TOC_PAGE_SHARE_THE_COURSE = 'tocPageShareTheCourse',\r\n TOC_PAGE_ADD_COURSE_TO_GOALS = 'tocPageAddCourseToGoals',\r\n TOC_PAGE_ADD_COURSE_TO_PLAYLIST = 'tocPageAddCourseToPlaylist',\r\n TOC_PAGE_ADD_COURSE_TO_WATCHLIST = 'tocPageAddCourseToWatchlist',\r\n TOC_PAGE_GIVE_COURSE_FEEDBACK = 'tocPageGiveCourseFeedback',\r\n TOC_PAGE_RESUME_THE_COURSE = 'tocPageResumeTheCourse',\r\n TOC_PAGE_START_OVER_THE_COURSE = 'tocPageStartOverTheCourse',\r\n TOC_PAGE_GO_TO_COURSE_QUIZ = 'tocPageGoToCourseQuiz',\r\n TOC_PAGE_GO_TO_COURSE_HANDS_ON = 'tocPageGoToCourseHandsOn',\r\n\r\n // Navbar\r\n NAVBAR = 'navbar',\r\n NAVBAR_VIEW_LOGO = 'navbarViewLogo',\r\n NAVBAR_CATALOG_ICON = 'navbarCatalogIcon',\r\n NAVBAR_NAVIGATOR_ICON = 'navbarNavigatorIcon',\r\n NAVBAR_NOTIFICATION_ICON = 'navbarNotificationIcon',\r\n NAVBAR_SETTINGS_ICON = 'navbarSettingsIcon',\r\n NAVBAR_SEARCH_ICON = 'navbarSearchIcon',\r\n NAVBAR_APPS_ICON = 'navbarAppsIcon',\r\n\r\n // Home Page\r\n HOME_PAGE = 'homePage',\r\n HOME_PAGE_VIEW_CAROUSEL = 'homePageViewCarousel',\r\n HOME_PAGE_VIEW_CONTINUE_LEARNING_STRIP = 'homePageViewContinueLearningStrip',\r\n HOME_PAGE_VIEW_FEATURED_APPS_STRIP = 'homePageViewFeaturedAppsStrip',\r\n HOME_PAGE_VIEW_RECENT_ADDITION_TO_PLAYLISTS_STRIP = 'homePageViewRecentAdditionToPlaylistsStrip',\r\n HOME_PAGE_VIEW_BASED_ON_YOUR_INTERESTS_STRIP = 'homePageViewBasedOnYourInterestsStrip',\r\n HOME_PAGE_VIEW_BASED_ON_WHAT_YOU_VIEWED_STRIP = 'homePageViewBasedOnWhatYouViewedStrip',\r\n HOME_PAGE_VIEW_LATEST_STRIP = 'homePageViewLatestStrip',\r\n HOME_PAGE_VIEW_TRENDING_STRIP = 'homePageViewTrendingStrip',\r\n HOME_PAGE_SHOW_COMPLETED_FILTER = 'homePageShowCompletedFilter',\r\n HOME_PAGE_SHOW_RESOURCES_FILTER = 'homePageShowResourcesFilter',\r\n\r\n // TNC Page\r\n TNC_PAGE = 'tncPage',\r\n TNC_PAGE_VIEW_CONTEST_RULES_SECTION = 'tncPageViewContestRulesSection',\r\n TNC_PAGE_VIEW_DATA_PRIVACY_SECTION = 'tncPageViewDataPrivacySection',\r\n TNC_PAGE_ACCEPT_TERMS_AND_CONDITIONS = 'tncPageAcceptTermsAndConditions',\r\n\r\n // Blogs\r\n BLOGS = 'blogs',\r\n BLOG_VIEW_OTHERS_BLOGS = 'blogViewOthersBlogs',\r\n BLOGS_LIKE_OTHER_BLOGS = 'blogsLikeOtherBlogs',\r\n BLOGS_VIEW_MY_BLOGS = 'blogsViewMyBlogs',\r\n BLOGS_WRITE_NEW_BLOG = 'blogsWriteNewBlog',\r\n BLOGS_SAVE_BLOG_AS_DRAFT = 'blogsSaveBlogAsDraft',\r\n BLOGS_EDIT_MY_SAVED_BLOG = 'blogsEditMySavedBlog',\r\n BLOGS_PUBLISH_MY_BLOG = 'blogsPublishMyBlog',\r\n BLOGS_UPVOTE_FOR_BLOG = 'blogsUpvoteForBlog',\r\n BLOGS_DOWNVOTE_FOR_BLOG = 'blogsDownvoteForBlog',\r\n BLOGS_WRITE_RESPONSE_FOR_BLOG = 'blogsWriteResponseForBlog',\r\n BLOGS_DELETE_MY_BLOG = 'blogsDeleteMyBlog',\r\n BLOGS_EDIT_MY_RESPONSE = 'blogsEditMyResponse',\r\n BLOGS_DELETE_MY_RESPONSE = 'blogsDeleteMyResponse',\r\n BLOGS_VIEW_DRAFTS_SECTION = 'blogsViewDraftsSection',\r\n BLOGS_VIEW_PUBLISHED_SECTION = 'blogsViewPublishedSection',\r\n\r\n // Question and Answer\r\n QUESTION_AND_ANSWER = 'questionAndAnswer',\r\n QUESTION_AND_ANSWER_VIEW_ALL_QUESTIONS_AND_ANSWERS = 'questionAndAnswerViewAllQuestionsAndAnswers',\r\n QUESTION_AND_ANSWER_VIEW_ONLY_UNANSWERED_QUESTIONS = 'questionAndAnswerViewOnlyUnansweredQuestions',\r\n QUESTION_AND_ANSWER_VIEW_MY_TIMELINE = 'questionAndAnswerViewMyTimeline',\r\n QUESTION_AND_ANSWER_ASK_NEW_QUESTION = 'questionAndAnswerAskNewQuestion',\r\n QUESTION_AND_ANSWER_VIEW_SPECIFIC_QUESTION = 'questionAndAnswerViewSpecificQuestion',\r\n QUESTION_AND_ANSWER_UPVOTE_FOR_ANSWER = 'questionAndAnswerUpvoteForAnswer',\r\n QUESTION_AND_ANSWER_DOWNVOTE_FOR_ANSWER = 'questionAndAnswerDownvoteForAnswer',\r\n QUESTION_AND_ANSWER_LIKE_AN_ANSWER = 'questionAndAnswerLikeAnAnswer',\r\n QUESTION_AND_ANSWER_ADD_COMMENT_FOR_ANY_ANSWER = 'questionAndAnswerAddCommentForAnyAnswer',\r\n QUESTION_AND_ANSWER_ADD_ANSWER_FOR_ANY_QUESTION = 'questionAndAnswerAddAnswerForAnyQuestion',\r\n QUESTION_AND_ANSWER_SAVE_QUESTION_AS_DRAFT = 'questionAndAnswerSaveQuestionAsDraft',\r\n QUESTION_AND_ANSWER_PUBLISH_SAVED_QUESTION = 'questionAndAnswerPublishedSavedQuestion',\r\n QUESTION_AND_ANSWER_VIEW_DRAFTS_SECTION = 'questionAndAnswerViewDraftsSection',\r\n QUESTION_AND_ANSWER_VIEW_PUBLISHED_SECTION = 'questionAndAnswerViewPublishedSection',\r\n\r\n // Badges\r\n BADGES = 'badges',\r\n BADGES_VIEW_RECENTLY_EARNED_BADGE = 'badgesViewRecentlyEarnedBadge',\r\n BADGES_VIEW_ALL_EARNED_BADGES = 'badgesViewAllEarnedBadges',\r\n BADGES_VIEW_NEXT_TARGETTED_BADGES = 'badgesViewNextTargettedBadges',\r\n\r\n // Hands on Dashboard\r\n HANDS_ON_DASHBOARD = 'handsOnDashboard',\r\n HANDS_ON_DASHBOARD_VIEW_MY_DASHBOARD = 'handsOnDashboardViewMyDashboard',\r\n HANDS_ON_DASHBOARD_VIEW_SHARED_PROFILE_SECTION = 'handsOnDashboardViewSharedProfileSection',\r\n\r\n // Learning History\r\n LEARNING_HISTORY = 'learningHistory',\r\n LEARNING_HISTORY_VIEW_PROGRAMS_SECTION = 'learningHistoryViewProgramsSection',\r\n LEARNING_HISTORY_VIEW_COURSES_SECTION = 'learningHistoryViewCoursesSection',\r\n LEARNING_HISTORY_VIEW_LEARNING_MODULES_SECTION = 'learningHistoryViewLearningModulesSection',\r\n LEARNING_HISTORY_VIEW_RESOURCES_SECTION = 'learningHistoryViewResourcesSection',\r\n LEARNING_HISTORY_VIEW_CERTIFICATIONS_SECTION = 'learningHistoryViewCertificationsSection',\r\n LEARNING_HISTORY_APPLY_COMPLETED_FILTER = 'learningHistoryApplyCompletedFilter',\r\n LEARNING_HISTORY_VIEW_MORE_BUTTON = 'learningHistoryViewMoreButton',\r\n\r\n // Learning Time\r\n LEARNING_TIME = 'learningTime',\r\n LEARNING_TIME_VIEW_LEARNING_TIME_GRAPH = 'learningTimeViewLearningTimeGraph',\r\n LEARNING_TIME_APPLY_BAR_GRAPH_FILTER = 'learningTimeApplyBarGraphFilter',\r\n LEARNING_TIME_APPLY_DATE_RANGE_FILTER = 'learningTimeApplyDateRangeFilter',\r\n LEARNING_TIME_APPLY_TIME_SPENT_FILTER = 'learningTimeApplyTimeSpentFilter',\r\n LEARNING_TIME_APPLY_APP_AVERAGE_FILTER = 'learningTimeApplyAppAverageFilter',\r\n LEARNING_TIME_APPLY_USER_AVERAGE_OVER_PERIOD_FILTER = 'learningTimeApplyUserAverageOverPeriodFilter',\r\n\r\n // Notification\r\n NOTIFICATION = 'notification',\r\n NOTIFICATION_VIEW_RECENT_BADGE_EARNED = 'notificationViewRecentBadgeEarned',\r\n NOTIFICATION_VIEW_SHARED_PLAYLIST = 'notificationViewSharedPlaylist',\r\n NOTIFICATION_VIEW_SHARED_GOALS = 'notificationViewSharedGoals',\r\n\r\n // Profile\r\n PROFILE = 'profile',\r\n PROFILE_VIEW_BASIC_INFORMATION = 'profileViewBasicInformation',\r\n PROFILE_VIEW_RECENTLY_LEARNED_COURSES = 'profileViewRecentlyLearnedCourses',\r\n PROFILE_VIEW_LIKED_ITEMS = 'profileViewLikedItems',\r\n PROFILE_VIEW_BADGES_EARNED = 'profileViewBadgesEarned',\r\n\r\n // Behavioural Skills\r\n BEHAVIORAL_SKILLS = 'behavioralSkills',\r\n BEHAVIORAL_SKILLS_VIEW_MODEL_CLIENT_INTERACTIONS = 'behavioralSkillsViewModalClientInteractions',\r\n BEHAVIORAL_SKILLS_VIEW_CLIENT_INTERACTION_TESTS = 'behavioralSkillsViewClientInteractionTests',\r\n\r\n // Certifications\r\n CERTIFICATIONS = 'certifications',\r\n CERTIFICATIONS_VIEW_MY_APPROVALS_SECTION = 'certificationsViewMyApprovalsSection',\r\n CERTIFICATIONS_VIEW_MY_REQUESTS_SECTION = 'certificationsViewMyRequestsSection',\r\n CERTIFICATIONS_VIEW_MY_CERTIFICATIONS_SECTION = 'certificationsViewMyCertificationsSection',\r\n CERTIFICATIONS_APPLY_COMPLETION_STATUS_FILTER = 'certificationsApplyCompletionStatusFilter',\r\n\r\n // Code Crack\r\n CODE_CRACK = 'codeCrack',\r\n CODE_CRACK_VIEW_PUZZLE_MANIA = 'codeCrackViewPuzzleMania',\r\n CODE_CRACK_VIEW_CODE_CRACK = 'codeCrackViewCodeCrack',\r\n CODE_CRACK_VIEW_TECHNOLOGY_PLAYGROUND = 'codeCrackViewTechnologyPlayground',\r\n CODE_CRACK_WATCH_PROGRAMMING_CHALLENGES_VIDEO = 'codeCrackWatchProgrammingChallengesVideo',\r\n CODE_CRACK_VIEW_ACCELERATE = 'codeCrackViewAccelerate',\r\n CODE_CRACK_START_CODE_CRACK_TEST = 'codeCrackStartCodeCrackTest',\r\n CODE_CRACK_START_PUZZLE_MANIA = 'codeCrackStartPuzzleMania',\r\n CODE_CRACK_START_TECHNOLOGY_PLAYGROUND = 'codeCrackStartTechnologyPlayground',\r\n\r\n // Instructor Led Training\r\n INSTRUCTOR_LED_TRAINING = 'instructorLedTraining',\r\n INSTRUCTOR_LED_TRAINING_VIEW_TRAINING_SCHEDULE_SECTION = 'instructorLedTrainingViewTrainingScheduleSection',\r\n INSTRUCTOR_LED_TRAINING_VIEW_FEEDBACK_SECTION = 'instructorLedTrainingViewFeedbackSection',\r\n INSTRUCTOR_LED_TRAINING_VIEW_TRAININGS_PLANNED_BY_YOUR_TEAM_SECTION = 'instructorLedTrainingViewTrainingsPlannedByYourTeamSection',\r\n INSTRUCTOR_LED_TRAINING_SEARCH_TRAINING = 'instructorLedTrainingSearchTraining',\r\n INSTRUCTOR_LED_TRAINING_REGISTER_FOR_TRAINING = 'instructorLedTrainingRegisterForTraining',\r\n INSTRUCTOR_LED_TRAINING_GIVE_TRAINING_FEEDBACK = 'instructorLedTrainingGiveTrainingFeedback',\r\n\r\n // LeaderBoard\r\n LEADERBOARD = 'leaderboard',\r\n LEADERBOARD_VIEW_WEEKLY_SECTION = 'leaderboardViewWeeklySection',\r\n LEADERBOARD_VIEW_MONTHLY_SECTION = 'leaderboardViewMonthlySection',\r\n LEADERBOARD_VIEW_HALL_OF_FAME_SECTION = 'leaderboardViewHallOfSection',\r\n LEADERBOARD_APPLY_LEARNER_COLLABORATOR_FILTER = 'leaderboardApplyLearnerCollaboratorFilter',\r\n LEADERBOARD_BACK_DATE_BUTTON = 'leaderboardBackDatebutton',\r\n LEADERBOARD_FORWARD_DATE_BUTTON = 'leaderboardForwardDateButton',\r\n\r\n // Playground\r\n PLAYGROUND = 'playground',\r\n PLAYGROUND_VIEW_TECHNOLOGY_PLAYGROUNDS_STRIP = 'playgroundViewTechnologyPlaygorundsStrip',\r\n PLAYGROUND_VIEW_ASSESSMENTS_PLAYGROUNDS_STRIP = 'playgroundViewAssessmentsPlaygroundsStrip',\r\n\r\n // Puzzle Mania\r\n PUZZLE_MANIA = 'puzzleMania',\r\n PUZZLE_MANIA_VIEW_PUZZLE_MANIA = 'puzzleManiaViewPuzzleMania',\r\n PUZZLE_MANIA_VIEW_CODE_CRACK = 'puzzleManiaViewCodeCrack',\r\n PUZZLE_MANIA_VIEW_TECHNOLOGY_PLAYGROUND = 'puzzleManiaViewTechnologyPlayground',\r\n PUZZLE_MANIA_WATCH_PROGRAMMING_CHALLENGES_VIDEO = 'puzzleManiaWatchProgrammingChallengesVideo',\r\n PUZZLE_MANIA_VIEW_ACCELERATE = 'puzzleManiaViewAccelerate',\r\n PUZZLE_MANIA_START_CODE_CRACK_TEST = 'puzzleManiaStartCodeCrackTest',\r\n PUZZLE_MANIA_START_PUZZLE_MANIA = 'puzzleManiaStartPuzzleMania',\r\n PUZZLE_MANIA_START_TECHNOLOGY_PLAYGROUND = 'puzzleManiaStartTechnologyPlayground',\r\n\r\n // Full Stack Sales Leader\r\n FULL_STACK_SALES_LEADER = 'fullStackSalesLeader',\r\n FULL_STACK_SALES_LEADER_WATCH_LEADER_VIDEO = 'fullStackSalesLeaderWatchLeaderVideo',\r\n FULL_STACK_SALES_LEADER_EMBARK_ON_THIS_LEARNING_JOURNEY_BUTTON = 'fullStackSalesLeaderEmbarkOnThisLearningJourneyButton',\r\n FULL_STACK_SALES_LEADER_QUICK_TOUR_VIDEO_LINK = 'fullStackSalesLeaderQuickTourVideoLink',\r\n FULL_STACK_SALES_LEADER_FEEDBACK_LINK = 'fullStackSalesLeaderFeedbackLink',\r\n FULL_STACK_SALES_LEADER_DROP_NOTE_LINK = 'fullStackSalesLeaderDropNoteLink',\r\n\r\n // Onboarding\r\n ONBOARDING = 'onboarding',\r\n ONBOARDING_VIEW_DC_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewDcOnboardingProgramsStrip',\r\n ONBOARDING_VIEW_ORGANISATIONAL_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewOrganisationalOnboardingProgramsStrip',\r\n ONBOARDING_VIEW_ROLE_BASED_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewRoleBasedOnboardingProgramsStrip',\r\n ONBOARDING_VIEW_UNIT_AND_PROJECT_ONBOARDING_PROGRAMS_STRIP = 'onboardingViewUnitAndProjectOnboardingProgramsStrip',\r\n\r\n // Search\r\n SEARCH = 'search',\r\n SEARCH_SEARCHING_CONTENT = 'searchSearchingContent',\r\n\r\n // Knowledge Hub\r\n KNOWLEDGE_HUB = 'knowledgeHub',\r\n KNOWLEDGE_HUB_SUBMIT_KNOWLEDGE_ARTIFACTS = 'knowledgeHubSubmitKnowledgeArtifacts',\r\n KNOWLEDGE_HUB_VIEW_TOP_PROJECTS_SECTION = 'knowledgeHubViewTopProjectsSection',\r\n KNOWLEDGE_HUB_VIEW_INTERESTING_READS_SECTION = 'knowledgeHubViewInterestingReadsSection',\r\n KNOWLEDGE_HUB_VIEW_MARKETING_SECTION = 'knowledgeHubViewMarketingSection',\r\n KNOWLEDGE_HUB_VIEW_KSHOP_CLASSIC_SECTION = 'knowledgeHubViewKshopClassicSection',\r\n KNOWLEDGE_HUB_VIEW_TRENDING_TOOLS_SECTION = 'knowledgeHubViewTrendingToolsSection',\r\n KNOWLEDGE_HUB_VIEW_DOCUMENTS_STRIP = 'knowledgeHubViewDocumentsStrip',\r\n KNOWLEDGE_HUB_VIEW_TOOLS_STRIP = 'knowledgeHubViewProjectReferencesStrip',\r\n KNOWLEDGE_HUB_VIEW_MARKETING_STRIP = 'knowledgeHubViewMarketingStrip',\r\n\r\n // Channels\r\n CHANNELS = 'channels',\r\n CHANNELS_VIEW_LEADERSHIP_SECTION = 'channelsViewLeadershipSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_PAGE = 'channelsViewRaviKumarPage',\r\n CHANNELS_VIEW_MOHIT_JOSHI_PAGE = 'channelsViewMohitJoshiPage',\r\n CHANNELS_FOLLOW_RAVI_KUMAR = 'channelsFollowRaviKumar',\r\n CHANNELS_MAIL_TO_RAVI_KUMAR = 'channelsMailToRaviKumar',\r\n CHANNELS_VIEW_ABOUT_RAVI_KUMAR_SECTION = 'channelsViewAboutRaviKumarSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_TWEETS_SECTION = 'channelsViewRaviKumarTweetsSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_ARTICLES_SECTION = 'channelsViewRaviKumarArticlesSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_TRAILBLAZERS_SECTION = 'channelsViewRaviKumarTrailblazersSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_COMMUNICATIONS_SECTION = 'channelsViewRaviKumarCommunicationsSection',\r\n CHANNELS_VIEW_RAVI_KUMAR_DISCUSSION_SECTION = 'channelsViewraviKumarDiscussionSection',\r\n CHANNELS_LIKE_TWEET_RAVI_KUMAR = 'channelsLikeTweetRaviKumar',\r\n CHANNELS_SHARE_TWEET_RAVI_KUMAR = 'channelsShareTweetRaviKumar',\r\n CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_RAVI_KUMAR = 'channelsPostYourThoughtsInDiscussionRaviKumar',\r\n CHANNELS_FOLLOW_MOHIT_JOSHI = 'channelsFollowMohitJoshi',\r\n CHANNELS_MAIL_TO_MOHIT_JOSHI = 'channelsMailToMohitJoshi',\r\n CHANNELS_VIEW_ABOUT_MOHIT_JOSHI_SECTION = 'channelsViewAboutMohitJoshiSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_TWEETS_SECTION = 'channelsViewMohitJoshiTweetsSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_ARTICLES_SECTION = 'channelsViewMohitJoshiArticlesSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_TRAILBLAZERS_SECTION = 'channelsViewMohitJoshiTrailblazersSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_COMMUNICATIONS_SECTION = 'channelsViewMohitJoshiCommunicationsSection',\r\n CHANNELS_VIEW_MOHIT_JOSHI_DISCUSSION_SECTION = 'channelsViewMohitJoshiDiscussionSection',\r\n CHANNELS_LIKE_TWEET_MOHIT_JOSHI = 'channelsLikeTweetMohitJoshi',\r\n CHANNELS_SHARE_TWEET_MOHIT_JOSHI = 'channelsShareTweetMohitJoshi',\r\n CHANNELS_POST_YOUR_THOUGHTS_IN_DISCUSSION_MOHIT_JOSHI = 'channelsPostYourThoughtsInDiscussionMohitJoshi',\r\n CHANNELS_VIEW_CORPORATE_SECTION = 'channelsViewCorporateSection',\r\n CHANNELS_VIEW_EXPERIENCE_WOW_PAGE = 'channelsViewExperienceWowPage',\r\n CHANNELS_VIEW_iGOT_KNOWLEDGE_INSTITUTE_PAGE = 'channelsViewiGOTKnowledgeInstitutePage',\r\n CHANNELS_VIEW_CMT_LEARNING_HUB_PAGE = 'channelsViewCmtLearningHubPage',\r\n CHANNELS_VIEW_FULL_STACK_SALES_LEADERS_PAGE = 'channelsViewFullStackSalesLeaderPage',\r\n\r\n // Experience Wow Page\r\n EXPERIENCE_WOW_PAGE = 'experienceWowPage',\r\n EXPERIENCE_WOW_PAGE_VIEW_PAGE_SECTIONS = 'experienceWowPageViewPageSections',\r\n EXPERIENCE_WOW_PAGE_CHECK_iGOT_STATISTICS = 'experienceWowPageCheckiGOTStatistics',\r\n EXPERIENCE_WOW_PAGE_CHECK_iGOT_ME_STATISTICS = 'experienceWowPageCheckiGOTMeStatistics',\r\n EXPERIENCE_WOW_PAGE_PROVIDE_SUGGESTIONS = 'experienceWowPageProvideSuggestions',\r\n EXPERIENCE_WOW_PAGE_SEND_MAIL_FOR_BECOMING_COCREATOR = 'experienceWowPageSendMailForBecomingCocreator',\r\n\r\n // iGOT Radio\r\n iGOT_RADIO = 'iGOTRadio',\r\n iGOT_RADIO_VIEW_PODCASTS_STRIP = 'iGOTRadioViewPodcastsStrip',\r\n\r\n // iGOT TV\r\n iGOT_TV = 'iGOTTv',\r\n iGOT_TV_VIEW_JUST_FOR_YOU_SECTION = 'iGOTTvViewJustForYouSection',\r\n iGOT_TV_VIEW_MUST_VIEW_STRIP = 'iGOTTvViewMustViewStrip',\r\n iGOT_TV_VIEW_LATEST_STRIP = 'iGOTTvViewLatestStrip',\r\n iGOT_TV_VIEW_CHANNELS_SECTION = 'iGOTTvViewChannelsSection',\r\n iGOT_TV_VIEW_CHANNELS_STRIP = 'iGOTTvViewChannelsStrip',\r\n iGOT_TV_VIEW_BROADCAST_SECTION = 'iGOTTvViewBroadcastSection',\r\n iGOT_TV_VIEW_PREVIOUS_EVENTS_LIST = 'iGOTTvViewPreviousEventsList',\r\n iGOT_TV_VIEW_LIVE_EVENTS_LIST = 'iGOTTvViewLiveEventsList',\r\n iGOT_TV_VIEW_UPCOMING_EVENTS_LIST = 'iGOTTvViewUpcomingEventsList',\r\n\r\n // Leadership Messages\r\n LEADERSHIP_MESSAGES = 'leadershipMessages',\r\n LEADERSHIP_MESSAGES_VIEW_LEADERSHIP_VIDEO = 'leadershipMessagesViewLeadershipVideo',\r\n\r\n // Living Labs\r\n LIVING_LABS = 'livingLabs',\r\n LIVING_LABS_VIEW_LIVING_LABS_STRIP = 'livingLabsViewLivingLabsStrip',\r\n\r\n // Americas Confluence 2018\r\n AMERICAS_CONFLUENECE = 'americasConfluence',\r\n AMERICAS_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS = 'americasConfluenceViewConfluenceVideosStrips',\r\n\r\n // APAC Confluence 2019\r\n APAC_CONFLUENECE = 'apacConfluence',\r\n APAC_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS = 'apacConfluenceViewConfluenceVideosStrips',\r\n\r\n // EMEA Confluence 2018\r\n EMEA_CONFLUENECE = 'emeaConfluence',\r\n EMEA_CONFLUENECE_VIEW_CONFLUENCE_VIDEOS_STRIPS = 'emeaConfluenceViewConfluenceVideosStrips',\r\n\r\n // Connect 2019\r\n CONNECT = 'connect',\r\n CONNECT_VIEW_CONTENT_STRIP = 'connectViewContentStrip',\r\n\r\n // Live Events\r\n LIVE_EVENTS = 'liveEvents',\r\n LIVE_EVENTS_WATCH_LIVE = 'liveEventsWatchLive',\r\n LIVE_EVENTS_WATCH_CLASSROOM_BROADCAST = 'liveEventsWatchClassroomBroadcast',\r\n LIVE_EVENTS_WATCH_THREE_SIXTY_VIDEO = 'liveEventsWatchThreeSixtyVideo',\r\n LIVE_EVENTS_WATCH_FAMILY_MATTERS_VIDEO = 'liveEventsWatchFamilyMattersVideo',\r\n LIVE_EVENTS_WATCH_CONFLUENCE_EVENTS = 'liveEventsWatchConfluenceEvents',\r\n\r\n // Digital Assistant Tour\r\n DIGITAL_ASSISTANT_TOUR = 'digitalAssistantTour',\r\n DIGITAL_ASSISTANT_TOUR_WATCH_TOUR_VIDEO = 'digitalAssistantTourWatchTourVideo',\r\n\r\n // Quick Tour\r\n QUICK_TOUR = 'quickTour',\r\n QUICK_TOUR_WATCH_TOUR_VIDEO = 'quickTourWatchTourVideo',\r\n\r\n // Logout\r\n LOGOUT = 'logout',\r\n LOGOUT_LOGS_OUT_FROM_APPLICATION = 'logoutLogsOutFromApplication',\r\n\r\n // My Analytics\r\n MY_ANALYTICS = 'myAnalytics',\r\n MY_ANALYTICS_APPLY_QUARTER_FILTERS = 'myAnalyticsApplyQuarterFilters',\r\n MY_ANALYTICS_VIEW_MY_LEARNING_SECTION = 'myAnalyticsViewMyLearningSection',\r\n MY_ANALYTICS_VIEW_MY_ASSESSMENT_SECTION = 'myAnalyticsViewMyAssessmentSection',\r\n MY_ANALYTICS_VIEW_MY_REFACTORING_SECTION = 'myAnalyticsViewMyRefactoringSection',\r\n MY_ANALYTICS_VIEW_MY_PLANS_SECTION = 'myAnalyticsViewMyPlansSection',\r\n MY_ANALYTICS_VIEW_MY_COLLABORATORS_SECTION = 'myAnalyticsViewMyCollaboratorsSection',\r\n MY_ANALYTICS_VIEW_MY_FEATURES_USAGE_SECTION = 'myAnalyticsViewTopCoursesSection',\r\n MY_ANALYTICS_VIEW_MY_LEARNING_MINUTES = 'myAnalyticsViewMyLearningMinutes',\r\n MY_ANALYTICS_VIEW_MY_LEARNING_POINTS = 'myAnalyticsViewMyLearningPoints',\r\n MY_ANALYTICS_VIEW_BADGES = 'myAnalyticsViewBadges',\r\n MY_ANALYTICS_VIEW_TIME_SPENT_BY_USER = 'myAnalyticsViewTimeSpentByUser',\r\n MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ON_iGOT = 'myAnalyticsViewAverageMinutesOniGOT',\r\n MY_ANALYTICS_VIEW_AVERAGE_MINUTES_ACROSS_DIMENSIONS = 'myAnalyticsViewAverageMinutesAcrossDimensions',\r\n MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_USER = 'myAnalyticsViewPercentageTimeSpentByUser',\r\n MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_INFOSCIONS = 'myAnalyticsViewPercentageTimeSpentByInfoscions',\r\n MY_ANALYTICS_VIEW_PERCENTAGE_TIME_SPENT_BY_PEERS = 'myAnalyticsViewPercentageTimeSpentByPeers',\r\n MY_ANALYTICS_VIEW_TOTAL_ASSESSMENTS = 'myAnalyticsViewTotalAssessments',\r\n MY_ANALYTICS_VIEW_PENDING_ASSESSMENTS = 'myAnalyticsViewPendingAssessments',\r\n MY_ANALYTICS_VIEW_CERTIFICATIONS = 'myAnalyticsViewCertifications',\r\n MY_ANALYTICS_VIEW_ASSESSMENTS = 'myAnalyticsViewAssessments',\r\n MY_ANALYTICS_VIEW_RECENT_ASSESSMENTS = 'myAnalyticsViewRecentAssessments',\r\n MY_ANALYTICS_VIEW_ASSESSMENT_DETAILS = 'myAnalyticsViewAssessmentDetails',\r\n MY_ANALYTICS_VIEW_RECENT_ASSESSMENT = 'myAnalyticsViewRecentAssessment',\r\n MY_ANALYTICS_VIEW_MY_REFACTORING_PROGRAM = 'myAnalyticsViewMyRefactoringProgram',\r\n MY_ANALYTICS_VIEW_NAVIGATOR = 'myAnalyticsViewNavigator',\r\n MY_ANALYTICS_VIEW_AI_AND_AUTOMATION_PROGRESS = 'myAnalyticsViewAiAndAutomationProcess',\r\n MY_ANALYTICS_VIEW_MY_GOALS = 'myAnalyticsViewMyGoals',\r\n MY_ANALYTICS_VIEW_PLAYLIST = 'myAnalyticsViewPlaylist',\r\n MY_ANALYTICS_VIEW_GOALS_SHARED_WITH_USER = 'myAnalyticsViewGoalsSharedWithUser',\r\n MY_ANALYTICS_VIEW_DETAILED_COURSES_PROGRESS = 'myAnalyticsViewDetailedCoursesProgress',\r\n MY_ANALYTICS_VIEW_GOALS_SHARED_BY_USER = 'myAnalyticsViewGoalsSharedByUser',\r\n MY_ANALYTICS_VIEW_ARTIFACTS_SHARED_BY_USER = 'myAnalyticsViewArtifactsSharedByUser',\r\n MY_ANALYTICS_VIEW_EXPERTS_USER_CONTACTED = 'myAnalyticsViewExpertsUserContacted',\r\n MY_ANALYTICS_VIEW_DETAILED_GOALS_SHARING = 'myAnalyticsViewDetailedGoalsSharing',\r\n MY_ANALYTICS_VIEW_PLAYGROUNDS = 'myAnalyticsViewPlaygrounds',\r\n MY_ANALYTICS_VIEW_LIKES = 'myAnalyticsViewLikes',\r\n MY_ANALYTICS_VIEW_SEARCH = 'myAnalyticsViewSearch',\r\n MY_ANALYTICS_VIEW_iGOT_TV = 'myAnalyticsViewiGOTTv',\r\n MY_ANALYTICS_VIEW_iGOT_RADIO = 'myAnalyticsViewiGOTRadio',\r\n MY_ANALYTICS_VIEW_iGOT_LIVE = 'myAnalyticsViewiGOTLive',\r\n MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_UNIT = 'myAnalyticsViewTopCoursesByUserUnit',\r\n MY_ANALYTICS_VIEW_TOP_COURSES_BY_USER_PEERS = 'myAnalyticsViewTopCoursesbyUserPeers',\r\n\r\n // Learning Analytics\r\n LEARNING_ANALYTICS = 'learningAnalytics',\r\n LEARNING_ANALYTICS_SEARCH_FOR_PARTICIPANTS_AND_EDUCATORS = 'learningAnalyticsSearchForParticipantsAndEducators',\r\n LEARNING_ANALYTICS_UNIT_FILTER = 'learningAnalyticsUnitFilter',\r\n LEARNING_ANALYTICS_PU_FILTER = 'learningAnalyticsPuFilter',\r\n LEARNING_ANALYTICS_DU_FILTER = 'learningAnalyticsDuFilter',\r\n LEARNING_ANALYTICS_ACCOUNT_FILTER = 'learningAnalyticsAccountFilter',\r\n LEARNING_ANALYTICS_LOCATION_FILTER = 'learningAnalyticsLocationFilter',\r\n LEARNING_ANALYTICS_QUARTER_FILTER = 'learningAnalyticsQuarterFilter',\r\n LEARNING_ANALYTICS_COMPLETED_FILTER = 'learningAnalyticsCompletedFilter',\r\n LEARNING_ANALYTICS_ETA_FILTER = 'learningAnalyticsEtaFilter',\r\n LEARNING_ANALYTICS_UNIQUE_USERS_DATA = 'learningAnalyticsUniqueUsersData',\r\n LEARNING_ANALYTICS_USERS_BY_ONSITE_OFFSHORE = 'learningAnalyticsUsersByOnsiteOffshore',\r\n LEARNING_ANALYTICS_USERS_BY_DEVICE_TYPE = 'learningAnalyticsUsersByDeviceType',\r\n LEARNING_ANALYTICS_USERS_BY_UNIT = 'learningAnalyticsUsersByUnit',\r\n LEARNING_ANALYTICS_USERS_BY_TRACK = 'learningAnalyticsUsersByTrack',\r\n LEARNING_ANALYTICS_USERS_BY_PU_SALES = 'learningAnalyticsUsersByPuSales',\r\n LEARNING_ANALYTICS_USERS_BY_CU_TYPE = 'learningAnalyticsUsersByCuType',\r\n LEARNING_ANALYTICS_USERS_BY_SKILL = 'learningAnalyticsUsersBySkill',\r\n LEARNING_ANALYTICS_USERS_BY_TOPICS = 'learningAnalyticsUsersByTopics',\r\n LEARNING_ANALYTICS_USERS_BY_HORIZON = 'learningAnalyticsUsersByHorizon',\r\n LEARNING_ANALYTICS_USERS_GROWTH = 'learningAnalyticsUsersGrowth',\r\n LEARNING_ANALYTICS_USERS_DETAILS = 'learningAnalyticsUsersDetails',\r\n LEARNING_ANALYTICS_VIEW_ALL_TRAININGS_SECTION = 'learningAnalyticsViewAllTrainingsSection',\r\n LEARNING_ANALYTICS_TALENT_GRID_FILTER = 'learningAnalyticstalentGridFilter',\r\n LEARNING_ANALYTICS_STACK_FILTER = 'learningAnalyticsStackFilter',\r\n LEARNING_ANALYTICS_UNIQUE_PARTICIPANTS = 'learningAnalyticsUniqueParticipants',\r\n LEARNING_ANALYTICS_OVERALL_PARTICIPANTS = 'learningAnalyticsOverallParticipants',\r\n LEARNING_ANALYTICS_AVERAGE_DAYS = 'learningAnalyticsAverageDays',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_ONSITE_ONSHORE = 'learningAnalyticsParticipantsByOnsiteOnshore',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_UNIT = 'learningAnalyticsParticipantsByUnit',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_PU = 'learningAnalyticsParticipantsByPu',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL_TYPE = 'learningAnalyticsParticipantsBySkillType',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_SKILL = 'learningAnalyticsParticipantsBySkill',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_STACKS = 'learningAnalyticsParticipantsByStacks',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_NEW_SERVICES = 'learningAnalyticsParticipantsByNewServices',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_LEARNING_TRACK = 'learningAnalyticsParticipantsByLearningTrack',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_OFFERING_MODE = 'learningAnalyticsParticipantsByOfferingMode',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_TOPICS = 'learningAnalyticsParticipantsByTopics',\r\n LEARNING_ANALYTICS_PARTICIPANTS_BY_ABCD = 'learningAnalyticsParticipantsByAbcd',\r\n LEARNING_ANALYTICS_PARTICIPANTS_DETAILS = 'learningAnalyticsParticipantsDetails',\r\n LEARNING_ANALYTICS_SCHEDULES_SECTION = 'learningAnalyticsSchedulesSection',\r\n LEARNING_ANALYTICS_SCHEDULE_DATE_FILTER = 'learningAnalyticsScheduleDateFilter',\r\n LEARNING_ANALYTICS_PARTICIPANTS = 'learningAnalyticsParticipants',\r\n LEARNING_ANALYTICS_EDUCATORS = 'learningAnalyticsEducators',\r\n LEARNING_ANALYTICS_COURSES = 'learningAnalyticsCourses',\r\n LEARNING_ANALYTICS_SCHEDULES = 'learningAnalyticsSchedules',\r\n LEARNING_ANALYTICS_VIEW_TRAINING_SCHEDULES_SECTION = 'learningAnalyticsTrainingSchedulesSection',\r\n LEARNING_ANALYTICS_COURSES_BY_OFFERING_MODE = 'learningAnalyticsCoursesByOfferingMode',\r\n LEARNING_ANALYTICS_COURSES_BY_TRACK = 'learningAnalyticsCoursesByTrack',\r\n LEARNING_ANALYTICS_COURSES_BY_TOPIC = 'learningAnalyticsCoursesByTopic',\r\n LEARNING_ANALYTICS_COURSES_BY_ABCD = 'learningAnalyticsCoursesByAbcd',\r\n LEARNING_ANALYTICS_COURSES_BY_SKILL = 'learningAnalyticsCoursesBySkill',\r\n\r\n // Apps Page\r\n APPS_PAGE = 'appsPage',\r\n APPS_PAGE_VIEW_DIFFERENT_APPS_ICONS = 'appsPageViewDifferentAppsIcons',\r\n\r\n // Course Card\r\n COURSE_CARD = 'courseCard',\r\n COURSE_CARD_LIKE_THE_COURSE_BUTTON = 'courseCardLikeTheCourseButton',\r\n COURSE_CARD_SHARE_THE_COURSE_BUTTON = 'courseCardShareTheCourseButton',\r\n COURSE_CARD_ADD_COURSE_TO_GOALS_BUTTON = 'courseCardAddCourseToGoalsButton',\r\n COURSE_CARD_ADD_COURSE_TO_PLAYLIST_BUTTON = 'courseCardAddCourseToPlaylistButton',\r\n COURSE_CARD_VIEW_MORE_OPTIONS_BUTTON = 'courseCardViewMoreOptionsButton',\r\n COURSE_CARD_START_COURSE_OPTION = 'courseCardStartCourseOption',\r\n COURSE_CARD_VIEW_TOC_OPTION = 'courseCardViewTocOption',\r\n COURSE_CARD_COHORTS_OPTION = 'courseCardCohortsOption',\r\n COURSE_CARD_ANALYTICS_OPTION = 'courseCardAnalyticsOption',\r\n\r\n // Search Results Page\r\n SEARCH_RESULTS_PAGE = 'searchResultsPage',\r\n SEARCH_RESULTS_PAGE_VIEW_LEARNING_SECTION = 'searchResultsPageViewLearningSection',\r\n SEARCH_RESULTS_PAGE_VIEW_CERTIFICATIONS_SECTION = 'searchResultsPageViewCertificationsSection',\r\n SEARCH_RESULTS_PAGE_VIEW_KNOWLEDGE_SECTION = 'searchResultsPageViewKnowledgeSection',\r\n SEARCH_RESULTS_PAGE_VIEW_PROJECTS_SECTION = 'searchResultsPageViewProjectsSection',\r\n SEARCH_RESULTS_PAGE_VIEW_SOCIAL_SECTION = 'searchResultsPageViewSocialSection',\r\n SEARCH_RESULTS_PAGE_CATALOG_FILTER = 'searchResultsPageCatalogFilter',\r\n SEARCH_RESULTS_PAGE_DURATION_FILTER = 'searchResultsPageDurationFilter',\r\n SEARCH_RESULTS_PAGE_CONTENT_TYPE_FILTER = 'searchResultsPageContentTypeFilter',\r\n SEARCH_RESULTS_PAGE_LEVEL_FILTER = 'searchResultsPageLevelFilter',\r\n SEARCH_RESULTS_PAGE_SOURCE_FILTER = 'searchResultsPageSourceFilter',\r\n SEARCH_RESULTS_PAGE_UNIT_FILTER = 'searchResultsPageUnitFilter',\r\n SEARCH_RESULTS_PAGE_TYPE_FILTER = 'searchResultsPageTypeFilter',\r\n SEARCH_RESULTS_PAGE_PUBLISHED_DATE_FILTER = 'searchResultsPagePublishedDateFilter',\r\n SEARCH_RESULTS_PAGE_CATEGORY_FILTER = 'searchResultsPageCategoryFilter',\r\n SEARCH_RESULTS_PAGE_ITEM_TYPE_FILTER = 'searchResultsPageItemTypeFilter',\r\n SEARCH_RESULTS_PAGE_TOPICS_FILTER = 'searchResultsPageTopicsFilter',\r\n SEARCH_RESULTS_PAGE_AUTHORS_FILTER = 'searchResultsPageAuthorsFilter',\r\n SEARCH_RESULTS_PAGE_TAGS_FILTER = 'searchResultsPageTagsFilter',\r\n SEARCH_RESULTS_PAGE_GROUPS_FILTER = 'searchResultsPageGroupsFilter',\r\n SEARCH_RESULTS_PAGE_VIEW_RESULT_CARDS = 'searchResultsPageViewResultCards',\r\n SEARCH_RESULTS_PAGE_VIEW_RELATED_CONCEPTS = 'searchResultsPageViewRelatedConcepts',\r\n\r\n // Lab42 Pages\r\n LAB_42_INTERVIEW = 'interview',\r\n LAB_42_DIALOGUE = 'dialogue',\r\n LAB_42_STRATEGY_MAP = 'strategyMap',\r\n LAB_42_VIRTUAL_CLASSROOM = 'virtualClassroom',\r\n LAB_42_PROJECT_STACK = 'projectStack',\r\n LAB_42_LIVE_TRANSCRIBE = 'liveTranscribe',\r\n LAB_42_EPOCH = 'epoch',\r\n\r\n // Learning Assistant Pages\r\n LEARNING_ASSISTANT_MAQ = 'learning-assistant-maq',\r\n LEARNING_ASSISTANT_ILIPDP = 'learning-assistant-ilipdp',\r\n}\r\n","export enum EInstance {\r\n INSTANCE = 'RootOrg',\r\n}\r\n","export function getStringifiedQueryParams(obj: { [key: string]: number | string | undefined | string[] }) {\r\n return Object.entries(obj)\r\n .filter(u => u[1])\r\n .map(u => {\r\n return `${u[0]}=${u[1]}`\r\n })\r\n .join('&')\r\n}\r\n"]}