{"version":3,"file":"main.js","mappings":"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WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;CAClB,CAAC;;;;;;;;;;;;;;;;;;;ACP6C;AAC4B;AAE9B;AACY;AAEvC;AAElB,IAAI,6EAAsB,EAAE;IAC1B,6DAAc,EAAE,CAAC;CAClB;AAED,yFAAsB,EAAE,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;;ACblC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvSA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/audits-viewer/audits-viewer.component.ts","./src/app/auth.guard.ts","./src/app/content-dialog/content-dialog.component.ts","./src/app/content/content.component.ts","./src/app/content/content.guard.ts","./src/app/default/default.component.ts","./src/app/document-viewer/document-viewer.component.ts","./src/app/enums/common.enums.ts","./src/app/external-asset/external-asset.component.ts","./src/app/login/login.component.ts","./src/app/messages/messages.component.ts","./src/app/no-auth.guard.ts","./src/app/not-found/not-found.component.ts","./src/app/picker/picker.component.ts","./src/app/pipes/audit-action-pipe.ts","./src/app/pipes/content-filter-pipe.ts","./src/app/pipes/content-icon-pipe.ts","./src/app/pipes/content-status-pipe.ts","./src/app/pipes/content-type-pipe.ts","./src/app/pipes/display-image-pipe.ts","./src/app/pipes/slide-deck-icon-pipe.ts","./src/app/pipes/slide-deck-type-pipe.ts","./src/app/pipes/spotlight-icon-pipe.ts","./src/app/pipes/spotlight-type-pipe.ts","./src/app/pipes/status-icon-pipe.ts","./src/app/pipes/timeago-pipe.ts","./src/app/services/app.service.ts","./src/app/services/content-sync.service.ts","./src/app/services/content.service.ts","./src/app/services/custom-icon.service.ts","./src/app/services/loading-state.service.ts","./src/app/services/message.service.ts","./src/app/services/sidenav.service.ts","./src/app/services/site-config.service.ts","./src/app/services/slide-deck-sync.service.ts","./src/app/services/slide-deck.service.ts","./src/app/services/spotlight-sync.service.ts","./src/app/services/spotlight.service.ts","./src/app/services/tag.service.ts","./src/app/session-extend-dialog/session-extend-dialog.component.ts","./src/app/sidenav-content/sidenav-content.component.ts","./src/app/sidenav-slide-decks/sidenav-slide-decks.component.ts","./src/app/sidenav-spotlights/sidenav-spotlights.component.ts","./src/app/sidenav/sidenav.component.ts","./src/app/slide-deck/slide-deck-guard.ts","./src/app/slide-deck/slide-deck.component.ts","./src/app/spotlight/spotlight.component.ts","./src/app/spotlight/spotlight.guard.ts","./src/app/tag-dialog/tag-dialog.component.ts","./src/app/uploader/uploader.component.ts","./src/app/warning/warning.component.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/.pnpm/moment@2.30.1/node_modules/moment/locale/ sync ^\\.\\/.*$","ignored|/home/runner/work/public/public/Sites/CMS/node_modules/.pnpm/froala-editor@4.4.0/node_modules/froala-editor/js|crypto"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { MsalGuard } from '@azure/msal-angular'; // MSAL guard\nimport { NotFoundComponent } from './not-found/not-found.component';\nimport { SidenavComponent } from './sidenav/sidenav.component';\nimport { ContentType, SidenavCategory, SlideDeckType, SpotlightType } from './enums/common.enums';\nimport { DefaultComponent } from './default/default.component';\nimport { ContentComponent } from './content/content.component';\nimport { ContentEditResolver } from './content/content.guard';\nimport { SlideDeckComponent } from './slide-deck/slide-deck.component';\nimport { SlideDeckEditResolver } from './slide-deck/slide-deck-guard';\nimport { SpotlightComponent } from './spotlight/spotlight.component';\nimport { SpotlightEditResolver } from './spotlight/spotlight.guard';\n\n// (New) Our custom no-auth guard\nimport { NoAuthGuard } from './no-auth.guard';\n\n// (New) The new login component you create \nimport { LoginComponent } from './login/login.component';\nimport { AuthGuard } from './auth.guard';\n\nconst routes: Routes = [\n // 0) Our dedicated login route\n {\n path: 'login',\n component: LoginComponent,\n canActivate: [NoAuthGuard], // If user is already logged in, skip\n },\n\n // 1) Wrap all existing routes (except the wildcard) in a parent route\n // that is protected by MSAL Guard. Users must sign in first.\n {\n path: '',\n canActivate: [AuthGuard],\n children: [\n {\n path: '',\n redirectTo: '/media-releases/articles',\n pathMatch: 'full',\n },\n {\n path: 'menu-structure',\n redirectTo: '/menu-structure/all-pages',\n pathMatch: 'full',\n },\n {\n path: 'all-pages/edit/:contentid',\n redirectTo: '/menu-structure/all-pages/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'biographies/edit/:contentid',\n redirectTo: '/menu-structure/biographies/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'external-pages/edit/:contentid',\n redirectTo: '/menu-structure/external-pages/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'menu-structure/all-pages',\n component: SidenavComponent,\n data: {\n contentType: ContentType.page,\n sidenavCategory: SidenavCategory.page,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'menu-structure/biographies',\n component: SidenavComponent,\n data: {\n contentType: ContentType.biography,\n sidenavCategory: SidenavCategory.page,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'menu-structure/external-pages',\n component: SidenavComponent,\n data: {\n contentType: ContentType.externalPage,\n sidenavCategory: SidenavCategory.page,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'media-releases',\n redirectTo: '/media-releases/articles',\n pathMatch: 'full',\n },\n {\n path: 'articles/edit/:contentid',\n redirectTo: '/media-releases/articles/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'images/edit/:contentid',\n redirectTo: '/media-releases/images/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'videos/edit/:contentid',\n redirectTo: '/media-releases/videos/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'audio/edit/:contentid',\n redirectTo: '/media-releases/audio/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'press-releases/edit/:contentid',\n redirectTo: '/media-releases/press-releases/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'documents/edit/:contentid',\n redirectTo: '/media-releases/documents/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'transcripts/edit/:contentid',\n redirectTo: '/media-releases/transcripts/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'media-releases/articles',\n component: SidenavComponent,\n data: {\n contentType: ContentType.article,\n sidenavCategory: SidenavCategory.mediaRelease,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'media-releases/images',\n component: SidenavComponent,\n data: {\n contentType: ContentType.image,\n sidenavCategory: SidenavCategory.mediaRelease,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'media-releases/videos',\n component: SidenavComponent,\n data: {\n contentType: ContentType.video,\n sidenavCategory: SidenavCategory.mediaRelease,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'media-releases/audio',\n component: SidenavComponent,\n data: {\n contentType: ContentType.audio,\n sidenavCategory: SidenavCategory.mediaRelease,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'media-releases/press-releases',\n component: SidenavComponent,\n data: {\n contentType: ContentType.pressRelease,\n sidenavCategory: SidenavCategory.mediaRelease,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'media-releases/documents',\n component: SidenavComponent,\n data: {\n contentType: ContentType.document,\n sidenavCategory: SidenavCategory.mediaRelease,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'media-releases/transcripts',\n component: SidenavComponent,\n data: {\n contentType: ContentType.transcript,\n sidenavCategory: SidenavCategory.mediaRelease,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:contentid',\n component: ContentComponent,\n resolve: {\n editContentBundle: ContentEditResolver,\n },\n },\n ],\n },\n {\n path: 'home-page',\n redirectTo: '/home-page/main-rotator',\n pathMatch: 'full',\n },\n {\n path: 'main-rotator/edit/:contentid',\n redirectTo: '/home-page/main-rotator/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'featured-content/edit/:contentid',\n redirectTo: '/home-page/featured-content/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'spotlights/edit/:contentid',\n redirectTo: '/home-page/spotlights/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'featured-bios/edit/:contentid',\n redirectTo: '/home-page/featured-bios/edit/:contentid',\n pathMatch: 'full',\n },\n {\n path: 'home-page/main-rotator',\n component: SidenavComponent,\n data: {\n slideDeckType: SlideDeckType.contentRotator,\n sidenavCategory: SidenavCategory.slideDeck,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:slidedeckid',\n component: SlideDeckComponent,\n resolve: {\n slideDeck: SlideDeckEditResolver,\n },\n },\n ],\n },\n {\n path: 'home-page/featured-content',\n component: SidenavComponent,\n data: {\n slideDeckType: SlideDeckType.contentGrid,\n sidenavCategory: SidenavCategory.slideDeck,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:slidedeckid',\n component: SlideDeckComponent,\n resolve: {\n slideDeck: SlideDeckEditResolver,\n },\n },\n ],\n },\n {\n path: 'home-page/spotlights',\n component: SidenavComponent,\n data: {\n spotlightType: SpotlightType.tagFeature,\n sidenavCategory: SidenavCategory.spotlight,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:spotlightid',\n component: SpotlightComponent,\n resolve: {\n spotlight: SpotlightEditResolver,\n },\n },\n ],\n },\n {\n path: 'home-page/featured-bios',\n component: SidenavComponent,\n data: {\n slideDeckType: SlideDeckType.biographyFeature,\n sidenavCategory: SidenavCategory.slideDeck,\n },\n children: [\n {\n path: '',\n component: DefaultComponent,\n },\n {\n path: 'edit/:slidedeckid',\n component: SlideDeckComponent,\n resolve: {\n slideDeck: SlideDeckEditResolver,\n },\n },\n ],\n }\n ]\n },\n\n // 2) Wildcard path for 404\n {\n path: '**',\n component: NotFoundComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import {\n Component,\n ViewChild,\n Pipe,\n PipeTransform,\n OnDestroy,\n HostBinding,\n OnInit\n} from '@angular/core';\nimport { CustomIconService } from './services/custom-icon.service';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { SiteConfigService, TargetOrganization } from './services/site-config.service';\nimport { Subscription } from 'rxjs';\nimport { SidenavService } from './services/sidenav.service';\nimport { AppService } from './services/app.service';\nimport { MatDialog } from '@angular/material/dialog';\n// import { WarningComponent } from './warning/warning.component';\n\n// MSAL imports\nimport { MsalService } from '@azure/msal-angular';\n\n// Dialog component\nimport { SessionExtendDialog } from './session-extend-dialog/session-extend-dialog.component';\n\n// (New) Import the Router\nimport { Router } from '@angular/router';\n\n// (New) Import OverlayContainer for theming overlays\nimport { OverlayContainer } from '@angular/cdk/overlay';\n\n@Pipe({ name: 'safe' })\nexport class SafePipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) { }\n transform(url: string) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit, OnDestroy {\n @ViewChild('sidenav', { static: false }) sidenav: MatSidenav;\n title = '';\n targetOrganization: TargetOrganization;\n siteConfigSubscription: Subscription;\n private isFrozen: boolean;\n\n // (1) HostBinding for the theme class\n @HostBinding('class') themeClass: string;\n\n // We’ll need to remove the old theme classes from both the host and overlay container.\n // These are the CSS classes that define your custom theme scoping.\n private readonly themeClasses = ['indigo-theme', 'red-theme', 'blue-theme', 'cyan-theme'];\n\n themeOptions: string[] = ['Indigo', 'Red', 'Blue', 'Cyan'];\n\n // Session timer fields: show only whole minutes remaining\n sessionExpiresIn: string = '';\n showExtendButton: boolean = false;\n private sessionInterval: any;\n private sessionDialogOpen: boolean = false;\n\n constructor(\n private customIconService: CustomIconService,\n private sidenavService: SidenavService,\n private appService: AppService,\n private siteConfigService: SiteConfigService,\n private warningDialog: MatDialog,\n private msalService: MsalService,\n private router: Router,\n // (2) Inject OverlayContainer\n private overlayContainer: OverlayContainer\n ) {\n this.customIconService.init();\n\n // Freeze logic\n this.appService.getIsFrozen().subscribe((isFrozen) => {\n this.isFrozen = isFrozen;\n });\n\n // Theme setup\n let savedTheme = '';\n try {\n savedTheme = window.localStorage.getItem('SELECTED_THEME') || '';\n } catch (error) {\n console.warn('LocalStorage is not accessible:', error);\n }\n // Default to Indigo if nothing is stored\n const initialTheme = savedTheme ? savedTheme : 'Indigo';\n this.themeClass = `${initialTheme.toLowerCase()}-theme`;\n\n // (3) Add the initial theme class to the overlay container\n this.overlayContainer.getContainerElement().classList.add(this.themeClass);\n\n // Subscribe to site config\n this.siteConfigSubscription = this.siteConfigService.siteConfig$.subscribe((siteConfig) => {\n this.targetOrganization = siteConfig.targetOrganization;\n this.title = siteConfig.targetOrganization.commandAcronym;\n });\n }\n\n ngOnInit() {\n // Process any redirect response from Azure AD\n this.msalService.handleRedirectObservable().subscribe({\n next: (result) => {\n if (result && result.account) {\n this.msalService.instance.setActiveAccount(result.account);\n console.log('Redirect processed, active account set:', result.account);\n\n // Automatically navigate to your main route\n this.router.navigate(['/media-releases/articles']);\n }\n // Start the session timer after processing the redirect\n this.startSessionTimer();\n },\n error: (error) => {\n console.error('Redirect processing error:', error);\n }\n });\n }\n\n ngOnDestroy() {\n this.siteConfigSubscription.unsubscribe();\n if (this.sessionInterval) {\n clearInterval(this.sessionInterval);\n }\n }\n\n // (4) Toggling the sidenav\n toggleSidenav() {\n this.sidenavService.toggleSidenav();\n }\n\n getSwatchColor(theme: string): string {\n const themeColors = {\n Indigo: '#3f51b5',\n Red: '#a11b1b',\n Blue: '#1976d2',\n Cyan: '#006064',\n };\n return themeColors[theme] || '#3f51b5';\n }\n\n // (5) Toggling the theme\n toggleTheme(selectedTheme: string) {\n // Remove old theme classes from both host and overlay container\n this.themeClasses.forEach(tc => {\n this.overlayContainer.getContainerElement().classList.remove(tc);\n });\n\n // Now set the new theme\n this.themeClass = `${selectedTheme.toLowerCase()}-theme`;\n this.overlayContainer.getContainerElement().classList.add(this.themeClass);\n\n try {\n window.localStorage.setItem('SELECTED_THEME', selectedTheme);\n } catch (error) {\n console.warn('Failed to save theme to LocalStorage:', error);\n }\n }\n\n // MSAL Sign-In/Sign-Out\n login(): void {\n this.msalService.loginRedirect();\n }\n\n logout(): void {\n const activeAccount = this.msalService.instance.getActiveAccount();\n // Note: The logoutHint can help Azure AD sign out from the correct account.\n this.msalService.logoutRedirect({\n account: activeAccount,\n logoutHint: activeAccount ? activeAccount.username : undefined,\n postLogoutRedirectUri: window.location.origin\n });\n }\n\n isLoggedIn(): boolean {\n return this.msalService.instance.getActiveAccount() != null;\n }\n\n getUserDisplayName(): string {\n const account = this.msalService.instance.getActiveAccount();\n if (!account) return '';\n const claims = account.idTokenClaims as any;\n return claims?.name || account.username || '';\n }\n\n getUserEmail(): string {\n const account = this.msalService.instance.getActiveAccount();\n if (!account) return '';\n const claims = account.idTokenClaims as any;\n return claims?.preferred_username || account.username || '';\n }\n\n // -----------------------------\n // Session Timer Methods (Minute-by-Minute)\n // -----------------------------\n private testMode: boolean = false; // set to true for testing\n\n startSessionTimer() {\n if (this.sessionInterval) {\n clearInterval(this.sessionInterval);\n }\n if (!this.isLoggedIn()) {\n this.sessionExpiresIn = '';\n this.showExtendButton = false;\n return;\n }\n const account = this.msalService.instance.getActiveAccount();\n if (!account || !account.idTokenClaims) {\n this.sessionExpiresIn = '';\n this.showExtendButton = false;\n return;\n }\n const claims = account.idTokenClaims as any;\n let expirationTime: number;\n if (this.testMode) {\n // For testing: simulate expiration in 1 minute\n expirationTime = Date.now() + 60000;\n } else {\n const exp = claims.exp;\n if (!exp) {\n this.sessionExpiresIn = '';\n this.showExtendButton = false;\n return;\n }\n expirationTime = exp * 1000;\n }\n this.updateSessionCountdown(expirationTime);\n // Update every minute (60,000 ms)\n this.sessionInterval = setInterval(() => {\n this.updateSessionCountdown(expirationTime);\n }, 60000);\n }\n\n updateSessionCountdown(expirationTime: number) {\n const now = Date.now();\n const diffMs = expirationTime - now;\n \n if (diffMs <= 0) {\n this.sessionExpiresIn = 'Expired';\n clearInterval(this.sessionInterval);\n this.logout();\n return;\n }\n \n // Compute whole minutes remaining (round up to next minute)\n const diffMin = Math.ceil(diffMs / 60000);\n this.sessionExpiresIn = `${diffMin} minute${diffMin !== 1 ? 's' : ''} remaining`;\n \n // Show \"Extend Session\" button if <= 5 minutes remain\n this.showExtendButton = diffMin <= 5;\n \n // If fewer than 1 minute remains, open the extend session dialog (if not already open)\n if (diffMs < 60000 && !this.sessionDialogOpen) {\n this.sessionDialogOpen = true;\n const dialogRef = this.warningDialog.open(SessionExtendDialog, {\n width: '300px',\n disableClose: true,\n data: { initialCountdown: Math.ceil(diffMs / 1000) }\n });\n dialogRef.afterClosed().subscribe((extend: boolean) => {\n this.sessionDialogOpen = false;\n if (extend) {\n this.extendSession();\n } else {\n this.logout();\n }\n });\n }\n }\n\n extendSession() {\n const account = this.msalService.instance.getActiveAccount();\n if (!account) {\n console.warn('No active account to extend session for.');\n return;\n }\n const silentRequest = {\n scopes: [`${this.siteConfigService.getAzureConfig().audience}/user_impersonation`],\n account: account,\n forceRefresh: true\n };\n this.msalService.acquireTokenSilent(silentRequest).subscribe({\n next: (response) => {\n console.log('Session extended:', response);\n // Restart the timer with the new token's expiration time\n this.startSessionTimer();\n },\n error: (error) => {\n console.error('Error extending session:', error);\n this.logout();\n }\n });\n }\n}\n","// ANGULAR\nimport { BrowserModule } from '@angular/platform-browser';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule, APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { AppComponent, SafePipe } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ContentService } from './services/content.service';\nimport { SlideDeckService } from './services/slide-deck.service';\nimport { SpotlightService } from './services/spotlight.service';\nimport { TagService } from './services/tag.service';\nimport { AppRoutingModule } from './app-routing.module';\nimport { SidenavComponent } from './sidenav/sidenav.component';\nimport { SidenavSlideDecks } from './sidenav-slide-decks/sidenav-slide-decks.component';\nimport { SidenavSpotlights } from './sidenav-spotlights/sidenav-spotlights.component';\nimport { ContentComponent } from './content/content.component';\nimport { RouterModule } from '@angular/router';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ContentEditResolver } from './content/content.guard';\nimport { SlideDeckEditResolver } from './slide-deck/slide-deck-guard';\nimport { SpotlightTypePipe, SpotlightTypePluralPipe, SpotlightTypeSlugPipe } from './pipes/spotlight-type-pipe';\nimport { SpotlightEditResolver } from './spotlight/spotlight.guard';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AuthGuard } from './auth.guard';\nimport { NoAuthGuard } from './no-auth.guard';\n\n// MATERIAL DESIGN\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\nimport { MatTableModule } from '@angular/material/table';\n\n// CUSTOM\nimport { Picker } from './picker/picker.component';\nimport { Uploader } from './uploader/uploader.component';\nimport { MessagesComponent } from './messages/messages.component';\nimport { MessageService } from './services/message.service';\nimport { CustomIconService } from './services/custom-icon.service';\nimport { SidenavContent } from './sidenav-content/sidenav-content.component';\nimport { SidenavService } from './services/sidenav.service';\nimport { AppService } from './services/app.service';\nimport { SiteConfigService } from './services/site-config.service';\nimport { DocumentViewerDialog } from './document-viewer/document-viewer.component';\nimport { AuditsViewerDialog } from './audits-viewer/audits-viewer.component';\nimport { ContentSyncService } from './services/content-sync.service';\nimport { ExternalAssetDialog } from './external-asset/external-asset.component';\nimport { NotFoundComponent } from './not-found/not-found.component';\nimport { DefaultComponent } from './default/default.component';\nimport { SlideDeckComponent } from './slide-deck/slide-deck.component';\nimport { SpotlightComponent } from './spotlight/spotlight.component';\nimport { ContentDialog } from './content-dialog/content-dialog.component';\nimport { SessionExtendDialog } from './session-extend-dialog/session-extend-dialog.component';\nimport { TagDialog } from './tag-dialog/tag-dialog.component';\nimport { SlideDeckSyncService } from './services/slide-deck-sync.service';\nimport { SpotlightSyncService } from './services/spotlight-sync.service';\nimport { WarningComponent } from './warning/warning.component';\n\n// NG-TRUNCATE\nimport { TruncateModule } from '@yellowspot/ng-truncate';\n\n// CUSTOM PIPES\nimport { ContentStatusPipe } from './pipes/content-status-pipe';\nimport { ContentFilterPipe } from './pipes/content-filter-pipe';\nimport { ContentTypePipe, ContentTypePluralPipe, ContentTypeSlugPipe } from './pipes/content-type-pipe';\nimport { StatusIconPipe } from './pipes/status-icon-pipe';\nimport { ContentIconPipe } from './pipes/content-icon-pipe';\nimport { SlideDeckTypePluralPipe, SlideDeckTypePipe, SlideDeckTypeSlugPipe } from './pipes/slide-deck-type-pipe';\nimport { SlideDeckIconPipe } from './pipes/slide-deck-icon-pipe';\nimport { SpotlightIconPipe } from './pipes/spotlight-icon-pipe';\nimport { DisplayImagePipe } from './pipes/display-image-pipe';\nimport { AuditActionPipe } from './pipes/audit-action-pipe';\nimport { TimeAgoPipe } from './pipes/timeago-pipe';\n\n// FROALA\nimport 'froala-editor/js/plugins.pkgd.min.js';\nimport { FroalaEditorModule, FroalaViewModule } from 'angular-froala-wysiwyg';\nimport { LoadingStateService } from './services/loading-state.service';\n\n// MSAL IMPORTS\nimport {\n MsalModule,\n MsalService,\n MsalGuard,\n MSAL_INSTANCE,\n MSAL_INTERCEPTOR_CONFIG,\n MSAL_GUARD_CONFIG,\n MsalInterceptor,\n MsalInterceptorConfiguration,\n MsalGuardConfiguration\n} from '@azure/msal-angular';\nimport {\n PublicClientApplication,\n InteractionType\n} from '@azure/msal-browser';\nimport { AzureConfiguration } from './services/site-config.service';\nimport { LoginComponent } from './login/login.component';\n\n//////////////////////////\n// 1) APP_INITIALIZER\n//////////////////////////\nexport function initializeSiteConfig(siteConfigService: SiteConfigService) {\n return () => siteConfigService.loadSiteConfig();\n}\n\n//////////////////////////\n// 2) MSAL FACTORIES\n//////////////////////////\nexport function MSALInstanceFactory(siteConfigService: SiteConfigService): PublicClientApplication {\n const azureConfig: AzureConfiguration = siteConfigService.getAzureConfig();\n \n return new PublicClientApplication({\n auth: {\n clientId: azureConfig.clientId || '',\n authority: `${azureConfig.instance}${azureConfig.tenantId}/v2.0`,\n redirectUri: window.location.origin\n },\n cache: {\n cacheLocation: 'localStorage',\n }\n });\n}\n\nexport function MSALInterceptorConfigFactory(\n siteConfigService: SiteConfigService\n): MsalInterceptorConfiguration {\n const azureConfig = siteConfigService.getAzureConfig();\n // Standard scope pattern for user_impersonation\n const scope = `${azureConfig.audience}/user_impersonation`;\n\n // Build a map of protected endpoints\n const protectedResourceMap = new Map>();\n\n // 1) ContentController => /api/content\n protectedResourceMap.set('/api/content', [scope]);\n\n // 2) SlideDecksController => /api/slidedecks\n protectedResourceMap.set('/api/slidedecks', [scope]);\n\n // 3) SpotlightsController => /api/spotlights\n protectedResourceMap.set('/api/spotlights', [scope]);\n\n // 4) TagsController => /api/tags\n protectedResourceMap.set('/api/tags', [scope]);\n\n // IMPORTANT: We *do not* add /api/siteConfig here, so it's public.\n\n return {\n interactionType: InteractionType.Redirect,\n protectedResourceMap,\n };\n}\n\n//////////////////////////\n// 3) MsalGuard Config\n//////////////////////////\nexport function MSALGuardConfigFactory(siteConfigService: SiteConfigService): MsalGuardConfiguration {\n const azureConfig: AzureConfiguration = siteConfigService.getAzureConfig();\n\n // You can define default scopes, or just pass an empty authRequest\n return {\n interactionType: InteractionType.Redirect, // or Popup\n authRequest: {\n scopes: [`${azureConfig.audience}/user_impersonation`]\n }\n };\n}\n\n//////////////////////////\n// 4) @NgModule\n//////////////////////////\n@NgModule({\n declarations: [\n AppComponent,\n SidenavComponent,\n ContentComponent,\n NotFoundComponent,\n SlideDeckComponent,\n SpotlightComponent,\n DefaultComponent,\n Picker,\n SidenavContent,\n SidenavSlideDecks,\n SidenavSpotlights,\n Uploader,\n SafePipe,\n TimeAgoPipe,\n DocumentViewerDialog,\n AuditsViewerDialog,\n ExternalAssetDialog,\n ContentTypePipe,\n ContentTypePluralPipe,\n ContentTypeSlugPipe,\n ContentFilterPipe,\n ContentDialog,\n SessionExtendDialog,\n TagDialog,\n SlideDeckTypePipe,\n SlideDeckTypePluralPipe,\n SlideDeckTypeSlugPipe,\n SpotlightTypePipe,\n SpotlightTypePluralPipe,\n SpotlightTypeSlugPipe,\n ContentStatusPipe,\n ContentIconPipe,\n SlideDeckIconPipe,\n SpotlightIconPipe,\n StatusIconPipe,\n DisplayImagePipe,\n AuditActionPipe,\n MessagesComponent,\n WarningComponent,\n LoginComponent\n ],\n imports: [\n BrowserModule,\n RouterModule,\n HttpClientModule,\n MatSidenavModule,\n MatToolbarModule,\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatTabsModule,\n MatFormFieldModule,\n MatInputModule,\n MatGridListModule,\n MatSelectModule,\n MatSnackBarModule,\n MatButtonToggleModule,\n BrowserAnimationsModule,\n AppRoutingModule,\n FormsModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDividerModule,\n MatSlideToggleModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatCardModule,\n MatTreeModule,\n MatDialogModule,\n MatListModule,\n TruncateModule,\n MatSliderModule,\n MatTableModule,\n MatDialogModule,\n MatBadgeModule,\n DragDropModule,\n MatExpansionModule,\n MatMomentDateModule,\n MatSortModule,\n FroalaEditorModule.forRoot(),\n FroalaViewModule.forRoot(),\n\n // MSAL Angular Module\n MsalModule\n ],\n providers: [\n ////////////////////////////////////////////\n // 1) Load Site Config before MSAL starts\n ////////////////////////////////////////////\n {\n provide: APP_INITIALIZER,\n useFactory: initializeSiteConfig,\n deps: [SiteConfigService],\n multi: true\n },\n\n // Your other services\n HttpClientModule,\n MessageService,\n ContentService,\n SlideDeckService,\n SpotlightService,\n TagService,\n SiteConfigService,\n ContentEditResolver,\n SlideDeckEditResolver,\n SpotlightEditResolver,\n CustomIconService,\n ContentSyncService,\n SlideDeckSyncService,\n SpotlightSyncService,\n Picker,\n SidenavContent,\n SidenavSlideDecks,\n SidenavSpotlights,\n Uploader,\n SidenavService,\n AppService,\n DocumentViewerDialog,\n AuditsViewerDialog,\n ExternalAssetDialog,\n ContentTypeSlugPipe,\n SlideDeckTypeSlugPipe,\n SpotlightTypePipe,\n SpotlightTypePluralPipe,\n SpotlightTypeSlugPipe,\n ContentDialog,\n SessionExtendDialog,\n TagDialog,\n LoadingStateService,\n\n ////////////////////////////////////////////\n // 2) MSAL Factories\n ////////////////////////////////////////////\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALInstanceFactory,\n deps: [SiteConfigService]\n },\n {\n provide: MSAL_INTERCEPTOR_CONFIG,\n useFactory: MSALInterceptorConfigFactory,\n deps: [SiteConfigService]\n },\n\n ////////////////////////////////////////////\n // 3) Guard Config, so MsalGuard works\n ////////////////////////////////////////////\n {\n provide: MSAL_GUARD_CONFIG,\n useFactory: MSALGuardConfigFactory,\n deps: [SiteConfigService]\n },\n\n // (Optional) Register the MSAL interceptor if you want tokens attached:\n // {\n // provide: HTTP_INTERCEPTORS,\n // useClass: MsalInterceptor,\n // multi: true\n // },\n\n MsalService,\n MsalGuard\n ],\n bootstrap: [AppComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class AppModule {}\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { Audit } from '../services/content.service';\nimport { MatSort } from '@angular/material/sort';\n\n@Component({\n selector: 'audits-viewer',\n templateUrl: 'audits-viewer.component.html',\n styleUrls: ['./audits-viewer.component.scss']\n})\nexport class AuditsViewerDialog implements OnInit {\n audits: MatTableDataSource;\n displayedColumns: string[] = ['timestamp', 'username', 'action', 'details'];\n @ViewChild(MatSort, { static: false }) sort: MatSort;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data) {\n }\n\n ngOnInit() {\n this.audits = new MatTableDataSource(this.data.audits);\n\n this.audits.sort = this.sort;\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n}","// auth.guard.ts\nimport { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { MsalService } from '@azure/msal-angular';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n private msalService: MsalService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n const account = this.msalService.instance.getActiveAccount();\n if (!account) {\n // Not logged in, go to /login\n this.router.navigate(['/login']);\n return false;\n }\n // Logged in\n return true;\n }\n}","import { Inject, Component, ViewChild, OnInit, AfterViewInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Content } from '../services/content.service';\nimport { ContentFilter, ContentType } from '../enums/common.enums';\nimport { Picker } from '../picker/picker.component';\n\n@Component({\n selector: 'content-dialog',\n templateUrl: './content-dialog.component.html',\n styleUrls: ['./content-dialog.component.scss']\n})\nexport class ContentDialog implements AfterViewInit {\n contentFilter = ContentFilter;\n contentType = ContentType;\n attachedIds: number[] = [];\n\n @ViewChild(Picker, { static: false }) contentPicker !: Picker;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: SlideDeckContentDialogData) { }\n\n ngAfterViewInit() {\n this.contentPicker.contentFilter = this.data.contentFilter;\n\n this.contentPicker.quantityPerPage = this.data.quantityPerPage;\n\n this.contentPicker.getResultPage();\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n addAttachedIds(content: Content) {\n if (!this.attachedIds.includes(content.id)) {\n this.attachedIds.push(content.id);\n }\n else {\n const indexToRemove = this.attachedIds.indexOf(content.id);\n\n this.attachedIds.splice(indexToRemove, 1);\n }\n }\n}\n\nexport interface SlideDeckContentDialogData {\n contentFilter: ContentFilter;\n quantityPerPage: number;\n}","// @ts-nocheck\nimport { Component, OnInit, ViewChild, ElementRef, AfterViewInit, ViewChildren, QueryList, OnDestroy } from '@angular/core';\nimport { ContentService, Content, ContentImage, ContentTag, SelectOption } from '../services/content.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSelectionList, MatSelectionListChange } from '@angular/material/list';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { NgForm, UntypedFormControl } from '@angular/forms';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { ENTER, COMMA } from '@angular/cdk/keycodes';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { ImageSize, ContentFilter, ContentType } from '../enums/common.enums';\nimport { Picker } from '../picker/picker.component';\nimport { trigger, transition, animate, style, state } from '@angular/animations';\nimport { DocumentViewerDialog } from '../document-viewer/document-viewer.component';\nimport { AuditsViewerDialog } from '../audits-viewer/audits-viewer.component';\nimport { ContentSyncService } from '../services/content-sync.service';\nimport { SiteConfigService, TargetOrganization } from '../services/site-config.service';\nimport { Subscription } from 'rxjs';\nimport { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';\nimport { SidenavService } from '../services/sidenav.service';\nimport { AppService } from '../services/app.service';\nimport { Tag, TagService } from '../services/tag.service';\n\n@Component({\n selector: 'content',\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss'],\n animations: [\n trigger('fadeOutOnDetach', [\n state('visible', style({\n opacity: 1\n })),\n state('invisible', style({\n opacity: 0\n })),\n transition('visible => invisible', animate('500ms ease-out'))\n ])\n ],\n providers: [\n { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS] },\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }\n ]\n})\nexport class ContentComponent implements OnInit, AfterViewInit, OnDestroy {\n content: Content;\n detached = false;\n recommendedTags: Tag[] = [];\n tagControl: UntypedFormControl = new UntypedFormControl();\n filteredTags: Observable;\n pickerOpened = false;\n onFirstImage = false;\n onLastImage = false;\n displayImage: ContentImage;\n hasHierarchy = false;\n imageSize = ImageSize;\n contentFilter: ContentFilter;\n contentType: typeof ContentType = ContentType;\n editorHeight = '500px';\n alreadyAttachedIds: number[] = [];\n targetOrganization: TargetOrganization;\n siteConfigSubscription: Subscription;\n hasAttachedImages: boolean;\n isMediaRelease: boolean;\n isArticle: boolean;\n isPressRelease: boolean;\n isBio: boolean;\n isPage: boolean;\n isImage: boolean;\n isVideo: boolean;\n isAudio: boolean;\n isDocument: boolean;\n isExternalPage: boolean;\n imageDetail: ContentImage;\n parentPageOptions: SelectOption[];\n ordinalOptions: SelectOption[];\n sectionOptions: SelectOption[];\n tagOptions: Tag[];\n isMobile: boolean;\n isTablet: boolean;\n embedCodeContent: string;\n imageFilter = ContentFilter.images;\n transcriptFilter = ContentFilter.transcripts;\n\n @ViewChild(MatButton, { static: false }) saveContentButton !: MatButton;\n @ViewChild(NgForm, { static: true }) editContentForm !: NgForm;\n @ViewChild(Picker, { static: false }) picker !: Picker;\n @ViewChild(MatSelectionList, { static: false }) attachedImagesList !: MatSelectionList;\n @ViewChild(ElementRef, { static: false }) videoFrame !: ElementRef;\n @ViewChild(ElementRef, { static: false }) imageDetailImage !: ElementRef;\n @ViewChild('tagInput') tagInput: ElementRef;\n @ViewChild('embedCode') embedCodeElement: ElementRef;\n @ViewChildren('overwriteSectionCheckbox, overwriteTitleCheckbox, overwriteAuthorCheckbox, overwriteAffiliationCheckbox, overwriteLocationCheckbox, overwriteTagsCheckbox') overwriteOptions: QueryList;\n\n constructor(\n private contentService: ContentService,\n private route: ActivatedRoute,\n public snackBar: MatSnackBar,\n public documentViewer: MatDialog,\n public auditsViewer: MatDialog,\n private contentSyncService: ContentSyncService,\n private sidenavService: SidenavService,\n private appService: AppService,\n private siteConfigService: SiteConfigService,\n private tagService: TagService\n ) {\n this.siteConfigSubscription = siteConfigService.siteConfig$.subscribe(siteConfig => {\n this.targetOrganization = siteConfig.targetOrganization;\n });\n }\n\n ngOnInit() {\n this.route.data.subscribe(data => {\n this.isMobile = this.sidenavService.isMobile;\n this.isTablet = this.sidenavService.isTablet;\n this.alreadyAttachedIds = [];\n this.recommendedTags = [];\n this.content = data.editContentBundle.content;\n this.hasAttachedImages = data.editContentBundle.hasAttachedImages;\n this.isMediaRelease = data.editContentBundle.isMediaRelease;\n this.isArticle = data.editContentBundle.isArticle;\n this.isPressRelease = data.editContentBundle.isPressRelease;\n this.isBio = data.editContentBundle.isBio;\n this.isPage = data.editContentBundle.isPage;\n this.isExternalPage = data.editContentBundle.isExternalPage;\n this.isImage = data.editContentBundle.isImage;\n this.isVideo = data.editContentBundle.isVideo;\n this.isAudio = data.editContentBundle.isAudio;\n this.isDocument = data.editContentBundle.isDocument;\n this.parentPageOptions = data.editContentBundle.parentPageOptions?.filter(option => option.id !== this.content.id);\n this.sectionOptions = data.editContentBundle.sectionOptions;\n this.embedCodeContent = '';\n this.tagService.getTags().subscribe(event => {\n this.tagOptions = event;\n });\n\n if (this.hasAttachedImages) {\n this.alreadyAttachedIds = this.content.attachedImages.map(attachedImage => attachedImage.image.id);\n\n this.content.attachedImages.forEach((image) => {\n image.state = 'visible';\n });\n\n this.sortAttachedImages();\n\n this.imageDetail = this.content.attachedImages[0];\n\n if (this.imageDetail) {\n this.disableShiftOrdinalFor(0);\n }\n }\n\n if (this.isAudio) {\n this.embedCodeContent = `\\\n\\\n`;\n }\n\n this.getRecommendedTags(this.content);\n\n this.filteredTags = this.tagControl.valueChanges\n .pipe(\n startWith(''),\n map(val => this.filterTag(val))\n );\n\n this.editContentForm.form.markAsPristine();\n });\n }\n\n ngAfterViewInit() {\n this.contentSyncService.clearActiveContent();\n\n if (this.attachedImagesList && this.attachedImagesList.options.length > 0) {\n this.attachedImagesList.options.first.focus();\n }\n }\n\n ngOnDestroy() {\n this.siteConfigSubscription.unsubscribe();\n }\n\n setOrientation() {\n if (this.imageDetailImage !== undefined) {\n const imageRef = this.imageDetailImage.nativeElement;\n\n if (imageRef.height > imageRef.width) {\n imageRef.classList.add('portrait');\n }\n else if (imageRef.height === imageRef.width) {\n imageRef.classList.add('square');\n }\n else {\n imageRef.classList.add('landscape');\n }\n }\n }\n\n onSubmit() {\n this.dirtyForm();\n\n this.appService.setIsFrozen(true);\n\n this.overwriteImageAttributes();\n\n // Update attached image status to match parent content\n if (this.content.attachedImages && this.content.attachedImages.length > 0) {\n // Update display image\n this.content.displayImageId = this.content.attachedImages[0].image.id;\n\n this.content.attachedImages.forEach((contentImage) => {\n contentImage.image.status = this.content.status;\n });\n }\n\n this.contentService.updateContent(this.content).subscribe(event => {\n if (event.ok) {\n if (this.hasAttachedImages) {\n this.sortAttachedImages();\n }\n\n this.content = event.body as Content;\n\n this.appService.setIsFrozen(false);\n\n this.openSnackBar('Content updated', 'OK');\n\n this.overwriteOptions.forEach(element => {\n element.checked = false;\n });\n\n this.contentSyncService.syncActiveContent(this.content);\n\n if (this.editContentForm.valid) {\n this.editContentForm.form.markAsPristine();\n }\n\n this.getRecommendedTags(this.content);\n }\n else {\n this.dirtyForm();\n\n this.appService.setIsFrozen(false);\n\n this.openSnackBar('Something went wrong', 'OK');\n }\n });\n }\n\n viewDocument() {\n this.documentViewer.open(DocumentViewerDialog, {\n width: '1000px',\n height: '80vh',\n data: {\n documentPath: this.targetOrganization.domainAndProtocol + '/document/' + this.content.id,\n name: this.content.documentFile.documentName\n }\n });\n }\n\n viewAudits() {\n this.contentService.getAudits(this.content.id).subscribe(audits => {\n this.auditsViewer.open(AuditsViewerDialog, {\n width: '1200px',\n height: '80vh',\n data: {\n audits: audits\n }\n });\n });\n }\n\n attachContent(content: Content) {\n switch (this.contentFilter) {\n case ContentFilter.images: {\n if (this.hasAttachedImages) {\n content.status = this.content.status;\n\n const newContentImage: ContentImage = {\n id: 0,\n ordinal: 0,\n image: content,\n imageId: content.id,\n state: 'visible'\n };\n\n this.content.attachedImages.unshift(newContentImage);\n\n this.reorderAttachedImages();\n\n this.alreadyAttachedIds.push(content.id);\n }\n else {\n this.content.displayImageId = content.id;\n\n this.pickerOpened = false;\n }\n break;\n }\n case ContentFilter.transcripts: {\n this.content.transcriptId = content.id;\n\n this.content.transcript = content;\n\n this.pickerOpened = false;\n }\n }\n\n this.dirtyForm();\n }\n\n detachImage(contentId: number) {\n this.imageDetail = undefined;\n\n const contentImage = this.content.attachedImages.find(i => i.id === contentId);\n\n contentImage.state = 'invisible';\n\n setTimeout(() => {\n const indexToRemove = this.content.attachedImages.findIndex(contentImage => contentImage.id === contentId);\n\n this.content.attachedImages.splice(indexToRemove, 1);\n\n this.reorderAttachedImages();\n\n this.dirtyForm();\n }, 500);\n\n const indexToRemove = this.alreadyAttachedIds.indexOf(contentImage.image.id);\n\n this.alreadyAttachedIds.splice(indexToRemove, 1);\n }\n\n detachAudioThumbnail() {\n this.content.displayImageId = null;\n\n this.displayImage = null;\n\n this.dirtyForm();\n }\n\n detachAudioTranscript() {\n this.content.transcriptId = 0;\n\n this.content.transcript = null;\n\n this.dirtyForm();\n }\n\n openSnackBar(message: string, action: string) {\n this.snackBar.open(message, action, {\n duration: 6000,\n });\n }\n\n onCopyEmbedCode() {\n const copyText = this.embedCodeElement.nativeElement;\n copyText.select();\n document.execCommand('copy');\n this.openSnackBar('Embed code copied!', 'OK');\n }\n\n dirtyForm() {\n if (this.editContentForm) {\n if (!this.editContentForm.form.dirty) {\n this.editContentForm.form.markAsDirty();\n }\n }\n }\n\n handleImageSelection(event: MatSelectionListChange) {\n if (!event.options[0].selected) {\n this.imageDetail = undefined;\n }\n else {\n event.source.deselectAll();\n\n event.options[0]._setSelected(true);\n\n this.imageDetail = this.content.attachedImages.find(contentImage => contentImage.ordinal === event.options[0].value);\n\n this.disableShiftOrdinalFor(event.options[0].value - 1);\n }\n }\n\n // dropImage(event: CdkDragDrop) {\n // moveItemInArray(this.content.attachedImages, event.previousIndex, event.currentIndex);\n\n // var counter = 0;\n\n // this.content.attachedImages.forEach(contentImage => {\n // contentImage.ordinal = counter;\n\n // counter++;\n // });\n\n // this.dirtyForm();\n // }\n\n imageUp() {\n this.shiftOrdinal(-1);\n }\n\n imageDown() {\n this.shiftOrdinal(1);\n }\n\n shiftOrdinal(direction: number) {\n const currentIndex = this.content.attachedImages.findIndex(contentImage => contentImage.ordinal === this.imageDetail.ordinal);\n\n const destinationIndex = currentIndex + direction;\n\n const current = this.content.attachedImages[currentIndex];\n\n const destination = this.content.attachedImages[destinationIndex];\n\n this.content.attachedImages[destinationIndex] = current;\n\n this.content.attachedImages[currentIndex] = destination;\n\n this.disableShiftOrdinalFor(destinationIndex);\n\n this.reorderAttachedImages();\n }\n\n reorderAttachedImages() {\n this.content.attachedImages.forEach((contentImage, index) => {\n contentImage.ordinal = index + 1;\n });\n\n this.sortAttachedImages();\n\n this.dirtyForm();\n }\n\n sortAttachedImages() {\n this.content.attachedImages.sort(function (a, b) { return a.ordinal - b.ordinal; });\n }\n\n disableShiftOrdinalFor(index: number) {\n if (index === 0) {\n this.onFirstImage = true;\n }\n else {\n this.onFirstImage = false;\n }\n\n if (index === this.content.attachedImages.length - 1) {\n this.onLastImage = true;\n }\n else {\n this.onLastImage = false;\n }\n }\n\n formatRecommendationWeightLabel(value: number | null): string {\n if (!value || value === 0) {\n return '–';\n }\n\n if (value === 1) {\n return 'Low';\n }\n\n if (value === 2) {\n return 'Med';\n }\n\n if (value === 3) {\n return 'High';\n }\n }\n\n // TAG MANAGEMENT ////////////////////////////////////\n tagsVisible = true;\n tagsSelectable = true;\n tagsRemovable = true;\n tagsAddOnBlur = true;\n\n // Enter, comma\n separatorKeysCodes = [ENTER, COMMA];\n\n addNewTag(event: MatChipInputEvent): void {\n const input = event.input;\n const value = event.value;\n let alreadyExists = false;\n let alreadyTagged = false;\n let existingTag: Tag;\n\n const newTag: Tag = {\n id: 0,\n name: value.trim()\n };\n\n // Determine whether the tag already exists\n this.tagOptions.forEach(tag => {\n if (tag.name.toLowerCase() === newTag.name.toLowerCase()) {\n alreadyExists = true;\n existingTag = tag;\n }\n });\n\n // Determine whether content is already tagged\n this.content.contentTags.forEach(contentTag => {\n if (contentTag.tag.name.toLowerCase() === newTag.name.toLowerCase()) {\n alreadyTagged = true;\n }\n });\n\n const newContentTag: ContentTag = {\n contentId: this.content.id,\n tagId: 0,\n tag: newTag\n };\n\n if (alreadyExists) { // Replace it with the existing tag\n newContentTag.tag = existingTag;\n }\n\n if (!this.content.contentTags) {\n const contentTags: ContentTag[] = [];\n\n this.content.contentTags = contentTags;\n }\n\n // Add tag to list if not already present; dirty form\n if (!alreadyTagged) {\n if ((value || '').trim()) {\n this.content.contentTags.push(newContentTag);\n }\n\n this.dirtyForm();\n }\n\n // Reset input value\n if (input) {\n input.value = '';\n }\n }\n\n removeTag(tag: ContentTag): void {\n const index = this.content.contentTags.indexOf(tag);\n\n if (index >= 0) {\n this.content.contentTags.splice(index, 1);\n }\n\n this.dirtyForm();\n }\n\n selectExistingTag(event: MatAutocompleteSelectedEvent): void {\n const existingTag = event.option.value as Tag;\n\n this.addExistingTag(existingTag);\n }\n\n addExistingTag(existingTag: Tag): void {\n let alreadyAttached = false;\n\n // Determine whether the tag is already attached\n if (this.content.contentTags) {\n this.content.contentTags.forEach(contentTag => {\n if (contentTag.tag.id === existingTag.id) {\n alreadyAttached = true;\n }\n });\n }\n\n if (!alreadyAttached) {\n // If no content tags, create empty list\n if (!this.content.contentTags) {\n const contentTags: ContentTag[] = [];\n\n this.content.contentTags = contentTags;\n }\n\n const newContentTag: ContentTag = {\n tagId: existingTag.id,\n contentId: this.content.id,\n tag: existingTag\n };\n\n this.content.contentTags.push(newContentTag);\n\n this.dirtyForm();\n }\n\n this.tagInput.nativeElement.value = '';\n this.tagControl.reset();\n\n this.filteredTags = this.tagControl.valueChanges\n .pipe(\n startWith(''),\n map(val => this.filterTag(val))\n );\n }\n\n filterTag(val: string): Tag[] {\n if (!val || typeof val !== 'string') return null;\n\n return this.tagOptions.filter(tag =>\n tag.name.toLowerCase().includes(val.toLowerCase()));\n }\n\n getRecommendedTags(content: Content): void {\n const title = content.title;\n const description = content.description;\n const body = content.body;\n\n this.tagOptions?.forEach(tag => {\n let alreadyAttached = false;\n\n // Determine whether the tag is already attached\n if (this.content.contentTags !== null) {\n this.content.contentTags.forEach(contentTag => {\n if (contentTag.tag.id === tag.id) {\n alreadyAttached = true;\n }\n });\n }\n\n if (!alreadyAttached) {\n let match = false;\n\n const pattern = new RegExp('\\\\b' + tag.name.replace(/[^\\w\\s]/g, '\\\\b'), 'i');\n\n match = pattern.test(title);\n match = pattern.test(description);\n match = pattern.test(body);\n\n if (match) {\n this.recommendedTags.push(tag);\n }\n }\n });\n\n this.recommendedTags = this.unique(this.recommendedTags) as Tag[]; // Remove duplicate tags\n }\n\n selectRecommendedTag(recommendedTag: Tag): void {\n this.addExistingTag(recommendedTag);\n\n this.recommendedTags = this.recommendedTags.filter(tag => tag.id !== recommendedTag.id);\n }\n // TAG MANAGEMENT ////////////////////////////////////\n\n openPicker(contentFilter: ContentFilter): void {\n this.contentFilter = contentFilter;\n\n this.pickerOpened = true;\n\n this.picker.contentFilter = contentFilter;\n\n this.picker.getResultPage();\n }\n\n // openAudioThumbnailDrawer(): void {\n // this.audioThumbnailDrawerOpened = true;\n\n // this.imagePicker.getResultPage();\n // }\n\n // openAudioTranscriptDrawer(): void {\n // this.audioTranscriptDrawerOpened = true;\n\n // this.transcriptPicker.getResultPage();\n // }\n\n clearSearchResults(): void {\n this.picker.searchBarVisibility = 'hidden';\n\n this.picker.resultSet = 1;\n\n this.picker.queryInput = '';\n\n this.picker.menuLinks = [];\n }\n\n selectAll() {\n this.overwriteOptions.forEach(element => {\n element.checked = true;\n });\n\n this.dirtyForm();\n }\n\n overwriteImageAttributes() {\n const checked = this.overwriteOptions.filter(checkbox => checkbox.checked);\n\n checked.forEach(checkbox => {\n this.content.attachedImages.forEach(contentImage => {\n switch (checkbox.id) {\n case 'overwriteSectionCheckbox':\n contentImage.image.sectionId = this.content.sectionId;\n break;\n case 'overwriteTitleCheckbox':\n contentImage.image.title = this.content.title;\n break;\n case 'overwriteAuthorCheckbox':\n contentImage.image.author = this.content.author;\n break;\n case 'overwriteAffiliationCheckbox':\n contentImage.image.affiliation = this.content.affiliation;\n break;\n case 'overwriteLoocationCheckbox':\n contentImage.image.location = this.content.location;\n break;\n case 'overwriteTagsCheckbox': {\n const imageContentTags: ContentTag[] = [];\n\n this.content.contentTags.forEach(contentTag => {\n const imageContentTag: ContentTag = {\n tag: null,\n tagId: contentTag.tag.id,\n contentId: contentImage.image.id\n };\n\n imageContentTags.push(imageContentTag);\n });\n\n contentImage.image.contentTags = imageContentTags;\n\n break;\n }\n }\n });\n });\n\n this.dirtyForm();\n }\n\n toggleOverwrite(event: MatCheckboxChange) {\n if (event.checked) {\n this.dirtyForm();\n }\n }\n\n public froalaOptions: Record = {\n htmlRemoveTags: [],\n\n heightMax: 500,\n\n pastePlain: true,\n\n htmlAllowedAttrs: ['accept', 'accept-charset', 'accesskey', 'action', 'align', 'allowfullscreen', 'allowtransparency', 'alt', 'aria-.*', 'async', 'autocomplete', 'autofocus', 'autoplay', 'autosave', 'background', 'bgcolor', 'border', 'charset', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'color', 'cols', 'colspan', 'content', 'contenteditable', 'contextmenu', 'controls', 'coords', 'data', 'data-.*', 'datetime', 'default', 'defer', 'dir', 'dirname', 'disabled', 'download', 'draggable', 'dropzone', 'enctype', 'for', 'form', 'formaction', 'frameborder', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'http-equiv', 'icon', 'id', 'ismap', 'itemprop', 'keytype', 'kind', 'label', 'lang', 'language', 'list', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'mozallowfullscreen', 'multiple', 'muted', 'name', 'novalidate', 'onclick', 'open', 'optimum', 'pattern', 'ping', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'reversed', 'rows', 'rowspan', 'sandbox', 'scope', 'scoped', 'scrolling', 'seamless', 'selected', 'shape', 'size', 'sizes', 'span', 'src', 'srcdoc', 'srclang', 'srcset', 'start', 'step', 'summary', 'spellcheck', 'style', 'tabindex', 'target', 'title', 'type', 'translate', 'usemap', 'value', 'valign', 'webkitallowfullscreen', 'width', 'wrap'],\n\n fontSize: ['8', '9', '10', '11', '12', '14', '16', '18', '24', '30', '36', '48', '60', '72', '96'],\n\n // Set custom buttons.\n toolbarButtons: {\n // Key represents the more button from the toolbar.\n moreText: {\n // List of buttons used in the group.\n buttons: ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'fontSize', 'textColor', 'backgroundColor', 'inlineClass', 'inlineStyle', 'clearFormatting'],\n\n // Alignment of the group in the toolbar.\n align: 'left',\n\n // By default, 3 buttons are shown in the main toolbar. The rest of them are available when using the more button.\n buttonsVisible: 3\n },\n\n moreParagraph: {\n buttons: ['alignLeft', 'alignCenter', 'formatOLSimple', 'alignRight', 'alignJustify', 'formatOL', 'formatUL', 'paragraphFormat', 'paragraphStyle', 'lineHeight', 'outdent', 'indent', 'quote'],\n align: 'left',\n buttonsVisible: 3\n },\n\n moreRich: {\n buttons: ['insertLink', 'insertImage', 'insertVideo', 'insertFile', 'insertTable', 'emoticons', 'fontAwesome', 'specialCharacters', 'embedly', 'insertHR'],\n align: 'left',\n buttonsVisible: 4\n },\n\n moreMisc: {\n buttons: ['undo', 'redo', 'fullscreen', 'print', 'spellChecker', 'selectAll', 'html', 'help'],\n align: 'right',\n buttonsVisible: 2\n }\n },\n\n charCounterCount: true,\n\n //toolbarSticky: false,\n\n // Set the image upload URL.\n imageUploadURL: '/api/content/createEmbeddedImage',\n\n // Set request type.\n imageUploadMethod: 'POST',\n\n // Allow to upload PNG and JPG.\n imageAllowedTypes: ['jpeg', 'jpg', 'png'],\n\n // Set the file upload parameter.\n fileUploadParam: 'file',\n\n // Enable file upload\n fileUpload: true,\n\n // Set the file upload URL\n fileUploadURL: '/api/content/createEmbeddedDocument',\n\n // Set the file request type\n fileUploadMethod: 'POST',\n\n // Max file size of 100 MB (104,857,600 Bytes)\n fileMaxSize: 104857600,\n\n // Allows file upload types of PDF and pptx\n fileAllowedTypes: [\n 'application/pdf',\n 'application/vnd.ms-powerpoint', // ppt\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation', // pptx\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' // ppsx\n ],\n\n key: 'xGE6oC4G4I4B10B5A5fLUQZf1ASFb1EFRNh1Hb1BCCQDUHnA8B6E5C4B1C3G3A1B8C5==',\n\n attribution: false,\n\n events: {\n 'contentChanged': () => {\n this.dirtyForm();\n }\n }\n };\n\n unique(array) {\n return Array.from(new Set(array));\n }\n}","// @ts-nocheck\nimport { Resolve, ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { ContentService, EditContentBundle } from '../services/content.service';\nimport { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { tap } from 'rxjs/operators';\n\n@Injectable()\nexport class ContentEditResolver implements Resolve {\n constructor(private service: ContentService, private router: Router) { }\n\n resolve(route: ActivatedRouteSnapshot): EditContentBundle | Observable | Promise {\n return this.service.getEditContentBundle(route.params.contentid)\n .pipe(\n tap(bundle => {\n if (!bundle) {\n this.router.navigate(['/404']);\n }\n })\n );\n }\n}","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ContentType, SlideDeckType, SpotlightType } from '../enums/common.enums';\n\n@Component({\n selector: 'app-default',\n template: `\n
\n \n \n \n
\n `,\n styleUrls: ['./default.component.scss']\n})\nexport class DefaultComponent implements OnInit {\n contentType?: ContentType;\n slideDeckType?: SlideDeckType;\n spotlightType?: SpotlightType;\n\n constructor(private route: ActivatedRoute) {}\n\n ngOnInit() {\n this.route.data.subscribe(data => {\n this.contentType = data.contentType ?? undefined;\n this.slideDeckType = data.slideDeckType ?? undefined;\n this.spotlightType = data.spotlightType ?? undefined;\n });\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'document-viewer',\n templateUrl: 'document-viewer.component.html',\n styleUrls: ['./document-viewer.component.scss']\n})\nexport class DocumentViewerDialog implements OnInit {\n documentPath: string;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data) { }\n\n ngOnInit() {\n this.documentPath = this.data.documentPath;\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n}","export enum ImageSize {\n original = 0,\n square = 1, // 75 x 75\n thumbnail = 2, // 75 x 100\n small = 3, // 180 x 240\n medium = 4, // 375 x 500\n large = 5, // 768 x 1024\n cover = 6, // 1600 x 1200\n}\n\nexport enum SidenavCategory {\n page = 0,\n mediaRelease = 1,\n slideDeck = 2,\n spotlight = 3\n}\n\nexport enum ContentFilter {\n all = 0,\n mediaReleases = 1,\n images = 2,\n biographies = 3,\n transcripts = 4\n}\n\nexport enum ContentType {\n content = -2,\n all = -1,\n page = 0,\n biography = 1,\n externalPage = 2,\n article = 3,\n pressRelease = 4,\n video = 5,\n image = 6,\n document = 7,\n transcript = 8,\n custom = 9,\n audio = 10\n}\n\nexport enum ContentStatus {\n draft = 0,\n preview = 1,\n published = 2,\n archived = 3,\n rejected = 4\n}\n\nexport enum ExternalProvider {\n generic = -1,\n youTube = 0,\n dvids = 1,\n vimeo = 2,\n eucom = 3,\n africom = 4,\n usaraf = 5,\n hoa = 6,\n spotify = 7,\n apple = 8\n}\n\nexport enum SlideDeckType {\n contentRotator = 0,\n scrollingFeature = 1,\n biographyFeature = 2,\n fullScreenFeature = 3,\n contentGrid = 4\n}\n\nexport enum SpotlightType {\n tagFeature = 0\n}\n\nexport enum CaptionPosition {\n left = 0,\n center = 1,\n right = 2\n}\n\nexport enum AuditAction {\n create = 0,\n update = 1,\n delete = 2\n}","import { Component, EventEmitter, Inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ContentType } from '../enums/common.enums';\nimport { ContentService, DVIDSAssetBasic } from '../services/content.service';\nimport { LoadingStateService } from '../services/loading-state.service';\nimport { Observable, Subject, concat } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Component({\n templateUrl: 'external-asset.component.html',\n styleUrls: ['external-asset.component.scss'],\n})\nexport class ExternalAssetDialog implements OnInit, OnDestroy {\n disableSubmit = true;\n placeholder: string;\n contentType: ContentType;\n commandDVIDSTags: string;\n latestDVIDSAssets: DVIDSAssetBasic[];\n @Output() importRequest: EventEmitter<{ url: string; id: string | number }> = new EventEmitter<{ url: string; id: string | number }>();\n loadingAssets = true;\n importErrorMessage: { [key: string]: string } = {}; // Change to an object\n private ngUnsubscribe = new Subject();\n\n // Define arrays of observables to track the loading states and completion status for multiple assets\n loadingAssets$: Observable[] = [];\n completedAssets$: Observable[] = [];\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data, private contentService: ContentService, private loadingStateService: LoadingStateService) {\n this.placeholder = this.data.placeholder;\n this.contentType = this.data.contentType;\n }\n\n ngOnInit() {\n this.contentService.getLatestDVIDSAssets(this.contentType).subscribe(assets => {\n this.latestDVIDSAssets = assets;\n this.loadingAssets = false;\n\n // Assuming this.latestDVIDSAssets contains unique identifiers for each asset (e.g., asset.id)\n const assetKeys = this.latestDVIDSAssets.map(asset => asset.id);\n\n // Subscribe to the loading and completion status observables for each asset\n assetKeys.forEach((key, i) => {\n this.loadingAssets$.push(this.loadingStateService.isLoading(key).pipe(takeUntil(this.ngUnsubscribe)));\n this.completedAssets$.push(this.loadingStateService.isCompleted(key).pipe(takeUntil(this.ngUnsubscribe)));\n\n // Subscribe to the error$ observable for each asset\n this.loadingStateService.getErrorObservable(key).pipe(takeUntil(this.ngUnsubscribe)).subscribe(\n (errorMessage) => {\n this.importErrorMessage[key] = errorMessage; // Store the error message for the specific asset\n }\n );\n });\n\n // After creating the observables\n this.completedAssets$.forEach((completed$, i) => {\n completed$.subscribe(completed => {\n console.log(`Asset ${i} completed: ${completed}`);\n });\n });\n });\n }\n\n importAsset(asset: DVIDSAssetBasic) {\n this.loadingStateService.startLoading(asset.id);\n this.importRequest.emit({ url: asset.url, id: asset.id });\n }\n\n // Use URL pattern matching to ensure only the proper URL is used to pull content\n enableSubmit(externalUrl: string) {\n let urlPattern;\n\n if (this.contentType === ContentType.video) {\n // Accept both YouTube and DVIDS links with 'video' segment\n urlPattern = /^https:\\/\\/(www\\.dvidshub\\.net\\/video\\/\\d+\\/[a-zA-Z0-9-]+|www\\.youtube\\.com\\/watch\\?v=[a-zA-Z0-9_-]+)$/;\n } else if (this.contentType === ContentType.article) {\n // Accept only DVIDS links with 'news' segment\n urlPattern = /^https:\\/\\/www\\.dvidshub\\.net\\/news\\/\\d+\\/[a-zA-Z0-9-]+$/;\n } else if (this.contentType === ContentType.audio) {\n // Accept only DVIDS links with 'audio' segment\n urlPattern = /^https:\\/\\/www\\.dvidshub\\.net\\/audio\\/\\d+\\/[a-zA-Z0-9-]+$/;\n } else {\n // Default case: reject all (or modify as per your needs)\n this.disableSubmit = true;\n return;\n }\n\n this.disableSubmit = !urlPattern.test(externalUrl);\n }\n\n cancel(): void {\n this.data = null;\n this.dialogRef.close();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import { Component } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent {\n constructor(private msalService: MsalService) {}\n\n onLoginClick() {\n // Kick off the MSAL login\n this.msalService.loginRedirect();\n }\n}","import { Component, OnInit } from '@angular/core';\nimport { MessageService } from '../services/message.service';\n\n@Component({\n selector: 'messages',\n templateUrl: './messages.component.html',\n styleUrls: ['./messages.component.scss']\n})\nexport class MessagesComponent implements OnInit {\n\n constructor(public messageService: MessageService) {}\n\n ngOnInit() {\n // Empty component\n }\n}","// no-auth.guard.ts\nimport { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { MsalService } from '@azure/msal-angular';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoAuthGuard implements CanActivate {\n constructor(\n private msalService: MsalService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n const account = this.msalService.instance.getActiveAccount();\n if (account) {\n // Already logged in, skip the login screen\n this.router.navigate(['/media-releases/articles']);\n return false;\n }\n // Not logged in, show the login component\n return true;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss']\n})\nexport class NotFoundComponent {\n\n}","// @ts-nocheck\nimport { tap } from 'rxjs/operators';\nimport { Component, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { Content, ContentService, SearchRequest, MenuLink } from '../services/content.service';\nimport { ContentType, ContentStatus, ImageSize, ContentFilter } from '../enums/common.enums';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'picker',\n templateUrl: 'picker.component.html',\n styleUrls: ['./picker.component.scss'],\n animations: [\n trigger('slideInOnSearch', [\n state('hidden', style({\n visibility: 'hidden',\n transform: 'translateX(699px)',\n })),\n state('visible', style({\n visibility: 'visible',\n transform: 'translateX(0)',\n })),\n transition('hidden <=> visible', animate('250ms ease-in'))\n ])\n ]\n})\nexport class Picker implements OnDestroy {\n @Output() attach: EventEmitter = new EventEmitter();\n @Input() contentFilter: ContentFilter;\n @Input() quantityPerPage = 12;\n @Input() filterable = true;\n @Input() resetResultSet = false;\n @Input() alreadyAttachedIds: number[] = [];\n @Input() showUploader = true;\n @Input() showArchived = true;\n\n searchRequest: Subject = new Subject();\n queryInput = '';\n resultSet = 1;\n menuLinks: MenuLink[] = [];\n searchBarVisibility = 'hidden';\n filterChanged = false;\n isLoading = false;\n noResults = false;\n showRightArrow = false;\n imageSize = ImageSize;\n contentType: ContentType = ContentType.all;\n\n constructor(private contentService: ContentService) {\n }\n\n ngOnInit() {\n this.contentService.search(this.searchRequest).pipe(\n tap(() => {\n this.resultSet = 1;\n }))\n .subscribe(searchResults => {\n this.isLoading = false;\n\n if (searchResults.menuLinks.length === 0) {\n this.noResults = true;\n }\n else {\n this.noResults = false;\n\n this.menuLinks = this.menuLinks.concat(searchResults.menuLinks);\n\n this.showRightArrow = searchResults.count > this.menuLinks.length;\n }\n });\n }\n\n ngOnDestroy() {\n this.attach.unsubscribe();\n }\n\n search(queryInput: string) {\n if (queryInput === '') {\n this.getResultPage();\n }\n else {\n this.menuLinks = [];\n\n this.noResults = false;\n\n this.isLoading = true;\n\n const request = new SearchRequest();\n\n request.resultSet = this.resultSet;\n request.query = this.queryInput;\n request.contentType = this.contentType;\n request.contentFilter = this.contentFilter;\n request.quantityPerPage = this.quantityPerPage;\n request.showArchived = this.showArchived;\n\n this.searchRequest.next(request);\n }\n }\n\n getResultPage() {\n this.menuLinks = [];\n\n setTimeout(() => {\n this.isLoading = true;\n }, 0);\n\n this.noResults = false;\n\n this.contentService.getResultPage(this.queryInput, this.contentType, this.contentFilter, this.resultSet, this.quantityPerPage, this.showArchived)\n .subscribe(searchResults => {\n if (this.resetResultSet) {\n this.resultSet = 1;\n }\n\n if (searchResults.menuLinks.length === 0) {\n this.noResults = true;\n }\n\n this.isLoading = false;\n\n this.menuLinks = this.menuLinks.concat(searchResults.menuLinks);\n\n this.showRightArrow = searchResults.count > this.menuLinks.length;\n });\n }\n\n pageForward() {\n this.resultSet++;\n\n this.menuLinks = [];\n\n this.getResultPage();\n }\n\n pageBack() {\n this.resultSet--;\n\n this.menuLinks = [];\n\n this.getResultPage();\n }\n\n filter() {\n this.filterChanged = true;\n\n this.showRightArrow = false;\n\n this.queryInput = '';\n\n this.resultSet = 1;\n\n this.menuLinks = [];\n\n this.getResultPage();\n\n this.filterChanged = false;\n }\n\n alreadyAttached(id: number): boolean {\n return this.alreadyAttachedIds.includes(id);\n }\n\n showSearchInput(): void {\n this.searchBarVisibility = 'visible';\n\n this.queryInput = '';\n }\n\n hideSearchInput(): void {\n this.searchBarVisibility = 'hidden';\n\n this.queryInput = '';\n\n this.resultSet = 1;\n\n this.menuLinks = [];\n\n this.getResultPage();\n }\n\n attachExistingContent(menuLink: MenuLink) {\n this.contentService.getContent(menuLink.id).subscribe(existingContent => {\n this.attach.emit(existingContent);\n });\n }\n\n attachNewContent(file: File) {\n const newContent: Content = {\n id: 0,\n type: ContentType.image,\n status: ContentStatus.draft,\n createdOn: new Date(),\n title: file.name.replace(/\\.[^/.]+$/, '')\n };\n\n const reader = new FileReader();\n\n reader.onload = (event: ProgressEvent) => {\n newContent.dataUrl = event.target.result as string;\n // Calculate file size //\n // let base64Length = newContent.dataUrl.length - (newContent.dataUrl.indexOf(',') + 1);\n\n // let padding = (newContent.dataUrl.charAt(newContent.dataUrl.length - 2) === '=') ? 2 : ((newContent.dataUrl.charAt(newContent.dataUrl.length - 1) === '=') ? 1 : 0);\n\n // let fileSize = base64Length * 0.75 - padding;\n\n // console.log(fileSize);\n // Calculate file size //\n this.attach.emit(newContent);\n };\n\n reader.readAsDataURL(file);\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { AuditAction } from '../enums/common.enums';\n\n@Pipe({ name: 'auditAction' })\nexport class AuditActionPipe implements PipeTransform {\n transform(auditAction: AuditAction): string {\n switch (auditAction) {\n case AuditAction.create:\n return 'Create';\n case AuditAction.delete:\n return 'Delete';\n case AuditAction.update:\n return 'Update';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { ContentFilter } from '../enums/common.enums';\n\n@Pipe({ name: 'contentFilter' })\nexport class ContentFilterPipe implements PipeTransform {\n transform(contentFilter: ContentFilter): string {\n switch (contentFilter) {\n case ContentFilter.all:\n return 'all';\n case ContentFilter.biographies:\n return 'biographies';\n case ContentFilter.images:\n return 'images';\n case ContentFilter.mediaReleases:\n return 'media releases';\n case ContentFilter.transcripts:\n return 'transcripts';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { ContentType } from '../enums/common.enums';\n\n@Pipe({ name: 'contentIcon' })\nexport class ContentIconPipe implements PipeTransform {\n transform(contentType: ContentType): string {\n switch (contentType) {\n case ContentType.page:\n return 'content_page';\n case ContentType.biography:\n return 'content_biography';\n case ContentType.externalPage:\n return 'content_external_page';\n case ContentType.article:\n return 'content_article';\n case ContentType.image:\n return 'content_image';\n case ContentType.video:\n return 'content_video';\n case ContentType.audio:\n return 'content_audio';\n case ContentType.pressRelease:\n return 'content_press_release';\n case ContentType.document:\n return 'content_document';\n case ContentType.transcript:\n return 'content_transcript';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { ContentStatus } from '../enums/common.enums';\n\n@Pipe({ name: 'contentStatus' })\nexport class ContentStatusPipe implements PipeTransform {\n transform(contentStatus: ContentStatus): string {\n switch (contentStatus) {\n case ContentStatus.archived:\n return 'archived';\n case ContentStatus.draft:\n return 'draft';\n case ContentStatus.published:\n return 'published';\n case ContentStatus.rejected:\n return 'rejected';\n case ContentStatus.preview:\n return 'preview';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { ContentType } from '../enums/common.enums';\n\n@Pipe({ name: 'contentType' })\nexport class ContentTypePipe implements PipeTransform {\n transform(contentType: ContentType): string {\n switch (contentType) {\n case ContentType.page:\n return 'page';\n case ContentType.biography:\n return 'biography';\n case ContentType.externalPage:\n return 'external page';\n case ContentType.article:\n return 'article';\n case ContentType.image:\n return 'image';\n case ContentType.video:\n return 'video';\n case ContentType.audio:\n return 'audio';\n case ContentType.pressRelease:\n return 'press release';\n case ContentType.document:\n return 'document';\n case ContentType.transcript:\n return 'transcript';\n }\n }\n}\n\n@Pipe({ name: 'contentTypePlural' })\nexport class ContentTypePluralPipe implements PipeTransform {\n transform(contentType: ContentType): string {\n switch (contentType) {\n case ContentType.page:\n return 'pages';\n case ContentType.biography:\n return 'biographies';\n case ContentType.externalPage:\n return 'external pages';\n case ContentType.article:\n return 'articles';\n case ContentType.image:\n return 'images';\n case ContentType.video:\n return 'videos';\n case ContentType.audio:\n return 'audio';\n case ContentType.pressRelease:\n return 'press releases';\n case ContentType.document:\n return 'documents';\n case ContentType.transcript:\n return 'transcripts';\n }\n }\n}\n\n@Pipe({ name: 'contentTypeSlug' })\nexport class ContentTypeSlugPipe implements PipeTransform {\n transform(contentType: ContentType): string {\n switch (contentType) {\n case ContentType.page:\n return 'all-pages';\n case ContentType.biography:\n return 'biographies';\n case ContentType.externalPage:\n return 'external-pages';\n case ContentType.article:\n return 'articles';\n case ContentType.image:\n return 'images';\n case ContentType.video:\n return 'videos';\n case ContentType.audio:\n return 'audio';\n case ContentType.pressRelease:\n return 'press-releases';\n case ContentType.document:\n return 'documents';\n case ContentType.transcript:\n return 'transcripts';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { ImageSize } from '../enums/common.enums';\n\n@Pipe({ name: 'displayImage' })\nexport class DisplayImagePipe implements PipeTransform {\n transform(value: number, imageSize: ImageSize): string {\n let size = '';\n\n switch (imageSize) {\n case ImageSize.original:\n size = 'original';\n break;\n case ImageSize.square:\n size = 'square';\n break;\n case ImageSize.thumbnail:\n size = 'thumbnail';\n break;\n case ImageSize.small:\n size = 'small';\n break;\n case ImageSize.medium:\n size = 'medium';\n break;\n case ImageSize.large:\n size = 'large';\n break;\n case ImageSize.cover:\n size = 'cover';\n break;\n }\n\n return '/img/' + value + '/' + size + '/display';\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { SlideDeckType } from '../enums/common.enums';\n\n@Pipe({ name: 'slideDeckIcon' })\nexport class SlideDeckIconPipe implements PipeTransform {\n transform(slideDeckType: SlideDeckType): string {\n switch (slideDeckType) {\n case SlideDeckType.contentRotator:\n return 'slidedeck_content_rotator';\n case SlideDeckType.biographyFeature:\n return 'slidedeck_biography_feature';\n case SlideDeckType.contentGrid:\n return 'slidedeck_content_grid';\n case SlideDeckType.fullScreenFeature:\n return 'slidedeck_full_screen_feature';\n case SlideDeckType.scrollingFeature:\n return 'slidedeck_scrolling_feature';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { SlideDeckType } from '../enums/common.enums';\n\n@Pipe({ name: 'slideDeckType' })\nexport class SlideDeckTypePipe implements PipeTransform {\n transform(slideDeckType: SlideDeckType): string {\n switch (slideDeckType) {\n case SlideDeckType.contentRotator:\n return 'Main Rotator';\n case SlideDeckType.biographyFeature:\n return 'Featured Bio';\n case SlideDeckType.contentGrid:\n return 'Featured Content';\n }\n }\n}\n\n@Pipe({ name: 'slideDeckTypePluralLabel' })\nexport class SlideDeckTypePluralPipe implements PipeTransform {\n transform(slideDeckType: SlideDeckType): string {\n switch (slideDeckType) {\n case SlideDeckType.contentRotator:\n return 'Main Rotators';\n case SlideDeckType.biographyFeature:\n return 'Featured Biographies';\n case SlideDeckType.contentGrid:\n return 'Featured Content';\n }\n }\n}\n\n@Pipe({ name: 'slideDeckTypeSlug' })\nexport class SlideDeckTypeSlugPipe implements PipeTransform {\n transform(slideDeckType: SlideDeckType): string {\n switch (slideDeckType) {\n case SlideDeckType.biographyFeature:\n return 'featured-bios';\n case SlideDeckType.contentGrid:\n return 'featured-content';\n case SlideDeckType.contentRotator:\n return 'main-rotator';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { SpotlightType } from '../enums/common.enums';\n\n@Pipe({ name: 'spotlightIcon' })\nexport class SpotlightIconPipe implements PipeTransform {\n transform(slideDeckType: SpotlightType): string {\n switch (slideDeckType) {\n case SpotlightType.tagFeature:\n return 'spotlight_tag_feature';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { SpotlightType } from '../enums/common.enums';\n\n@Pipe({ name: 'spotlightType' })\nexport class SpotlightTypePipe implements PipeTransform {\n transform(spotlightType: SpotlightType): string {\n switch (spotlightType) {\n case SpotlightType.tagFeature:\n return 'Spotlight';\n }\n }\n}\n\n@Pipe({ name: 'spotlightTypePluralLabel' })\nexport class SpotlightTypePluralPipe implements PipeTransform {\n transform(spotlightType: SpotlightType): string {\n switch (spotlightType) {\n case SpotlightType.tagFeature:\n return 'Spotlights';\n }\n }\n}\n\n@Pipe({ name: 'spotlightTypeSlug' })\nexport class SpotlightTypeSlugPipe implements PipeTransform {\n transform(spotlightType: SpotlightType): string {\n switch (spotlightType) {\n case SpotlightType.tagFeature:\n return 'spotlights';\n }\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { ContentStatus } from '../enums/common.enums';\n\n@Pipe({ name: 'statusIcon' })\nexport class StatusIconPipe implements PipeTransform {\n transform(contentStatus: ContentStatus): string {\n switch (contentStatus) {\n case ContentStatus.draft:\n return 'drafts';\n case ContentStatus.preview:\n return 'rate_review';\n case ContentStatus.published:\n return 'publish';\n case ContentStatus.archived:\n return 'archive';\n case ContentStatus.rejected:\n return 'block';\n }\n }\n}","import { Pipe, PipeTransform, NgZone, ChangeDetectorRef, OnDestroy } from '@angular/core';\n@Pipe({\n name:'timeAgo',\n pure:false\n})\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\n private timer: number;\n constructor(private changeDetectorRef: ChangeDetectorRef, private ngZone: NgZone) {}\n transform(value:string) {\n this.removeTimer();\n const d = new Date(value);\n const now = new Date();\n const seconds = Math.round(Math.abs((now.getTime() - d.getTime())/1000));\n const timeToUpdate = (Number.isNaN(seconds)) ? 1000 : this.getSecondsUntilUpdate(seconds) *1000;\n this.timer = this.ngZone.runOutsideAngular(() => {\n if (typeof window !== 'undefined') {\n return window.setTimeout(() => {\n this.ngZone.run(() => this.changeDetectorRef.markForCheck());\n }, timeToUpdate);\n }\n return null;\n });\n const minutes = Math.round(Math.abs(seconds / 60));\n const hours = Math.round(Math.abs(minutes / 60));\n const days = Math.round(Math.abs(hours / 24));\n const months = Math.round(Math.abs(days/30.416));\n const years = Math.round(Math.abs(days/365));\n if (Number.isNaN(seconds)) {\n return '';\n } else if (seconds <= 45) {\n return 'a few seconds ago';\n } else if (seconds <= 90) {\n return 'a minute ago';\n } else if (minutes <= 45) {\n return minutes + ' minutes ago';\n } else if (minutes <= 90) {\n return 'an hour ago';\n } else if (hours <= 22) {\n return hours + ' hours ago';\n } else if (hours <= 36) {\n return 'a day ago';\n } else if (days <= 25) {\n return days + ' days ago';\n } else if (days <= 45) {\n return 'a month ago';\n } else if (days <= 345) {\n return months + ' months ago';\n } else if (days <= 545) {\n return 'a year ago';\n } else { // (days > 545)\n return years + ' years ago';\n }\n }\n ngOnDestroy(): void {\n this.removeTimer();\n }\n private removeTimer() {\n if (this.timer) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n }\n private getSecondsUntilUpdate(seconds:number) {\n const min = 60;\n const hr = min * 60;\n const day = hr * 24;\n if (seconds < min) { // less than 1 min, update every 2 secs\n return 2;\n } else if (seconds < hr) { // less than an hour, update every 30 secs\n return 30;\n } else if (seconds < day) { // less then a day, update every 5 mins\n return 300;\n } else { // update every hour\n return 3600;\n }\n }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class AppService {\n public $subject: Subject = new Subject();\n\n setIsFrozen(message: boolean) {\n this.$subject.next(message);\n }\n\n getIsFrozen() {\n return this.$subject.asObservable();\n }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Content } from './content.service';\n\n@Injectable()\nexport class ContentSyncService {\n public $subject: Subject = new Subject();\n\n syncActiveContent(message: Content) {\n this.$subject.next(message);\n }\n\n getActiveContent(): Observable {\n return this.$subject.asObservable();\n }\n\n clearActiveContent() {\n this.$subject.next(null);\n }\n}","// @ts-nocheck\nimport { switchMap, distinctUntilChanged, filter, debounceTime, catchError } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Time } from '@angular/common';\nimport { ContentType, ContentStatus, ExternalProvider, ContentFilter, AuditAction } from '../enums/common.enums';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Binary } from '@angular/compiler';\nimport { of } from 'rxjs';\nimport { MessageService } from './message.service';\nimport { Tag } from './tag.service';\nimport { util } from '../util/utility';\nimport { throwError } from 'rxjs';\n\n@Injectable()\nexport class ContentService {\n constructor(private http: HttpClient, private messageService: MessageService) { }\n\n public getPageHierarchy(showArchived = true) {\n const options = {\n params: new HttpParams()\n .set('showArchived', showArchived.toString())\n };\n\n return this.http.get('/api/content/getPageHierarchy', options);\n }\n\n public updatePageHierarchyBranch(treeNodes: TreeNode[]) {\n return this.http.post('/api/content/updatePageHierarchyBranch', treeNodes, { observe: 'response' });\n }\n\n public search(searchRequest: Observable) {\n return searchRequest.pipe(\n debounceTime(1000),\n filter(searchRequest => searchRequest.query.length > 2),\n distinctUntilChanged(),\n switchMap(searchRequest => this.getResultPage(\n searchRequest.query,\n searchRequest.contentType,\n searchRequest.contentFilter,\n searchRequest.resultSet,\n searchRequest.quantityPerPage,\n searchRequest.showArchived\n )));\n }\n\n public getResultPage(query: string, contentType: ContentType, contentFilter: ContentFilter, resultSet: number, quantityPerPage: number, showArchived: boolean) {\n const options = {\n params: new HttpParams()\n .set('query', query)\n .set('contentType', contentType.toString())\n .set('contentFilter', contentFilter.toString())\n .set('resultSet', resultSet.toString())\n .set('quantityPerPage', quantityPerPage.toString())\n .set('showArchived', showArchived.toString())\n };\n\n const searchResults = this.http.get('/api/content/searchContent', options);\n\n return searchResults;\n }\n\n public getEditContentBundle(contentId: number) {\n this.messageService.clear();\n\n return this.http.get(`/api/content/getEditContentBundle/${contentId}`).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError(`getEditContentBundle; id=${contentId}`))\n );\n }\n\n public getContent(contentId: number): Observable {\n if (!contentId) {\n throw new Error('Content ID is required to fetch content.');\n }\n \n this.messageService.clear();\n \n return this.http.get(`/api/content/getContent/${contentId}`)\n .pipe(\n // Removed the tap() operation since you have it commented out\n catchError(this.handleGetContentError(`getContent; id=${contentId}`))\n );\n }\n \n private handleGetContentError(operation = 'operation', result?: T) {\n return (error: unknown): Observable => {\n const err = error as Error;\n console.error(`${operation} failed: ${err.message}`);\n this.messageService.add(`ContentService: ${operation} failed: ${err.message}`);\n return throwError(error);\n };\n }\n\n public getAudits(contentId: number) {\n this.messageService.clear();\n\n return this.http.get(`/api/content/getAudits/${contentId}`).pipe(\n //tap(_ => this.log(`Fetched content; id=${contentId}`)),\n catchError(this.handleError(`getAudits; id=${contentId}`))\n );\n }\n\n public getLatestDVIDSAssets(contentType: ContentType) {\n const options = {\n params: new HttpParams()\n .set('contentType', contentType.toString())\n };\n\n return this.http.get('/api/content/getLatestDVIDSAssets/', options).pipe(\n catchError(this.handleError('getLatestDVIDSAssets'))\n );\n }\n\n public updateContent(content: Content): Observable> {\n this.messageService.clear();\n\n return this.http.post('/api/content/updateContent', content, { observe: 'response' }).pipe(\n //tap(_ => this.log(`Updated content; id=${content.id}`)),\n catchError(this.handleError>(`updateContent; id=${content.id}`))\n );\n }\n\n public createContent(contentType: ContentType, file?: File, externalUrl?: string): Observable> {\n const formData = new FormData();\n formData.append('contentType', contentType.toString());\n if (file) {\n formData.append('file', file);\n }\n if (externalUrl) {\n formData.append('externalUrl', externalUrl);\n }\n \n return this.http.post('/api/content/createContent', formData, { observe: 'response' }).pipe(\n catchError(this.handleCreateContentError>('createContent'))\n );\n }\n \n private handleCreateContentError(operation = 'operation', result?: T) {\n return (error: unknown): Observable => { // Changed unknown to any to handle any type of error\n const err = error as Error;\n console.error(`${operation} failed: ${err.message}`);\n this.messageService.add(`ContentService: ${operation} failed: ${err.message}`);\n return throwError(error); // Use throwError instead of returning 'of' to propagate the error correctly\n };\n }\n\n /** Log a ContentService message with the MessageService */\n private log(message: string) {\n\n this.messageService.add(`ContentService: ${message}`);\n }\n\n /**\n * Handle Http operation that failed.\n * Let the app continue.\n * @param operation - name of the operation that failed\n * @param result - optional value to return as the observable result\n */\n private handleError(operation = 'operation', result?: T) {\n return (error: Error): Observable => {\n console.error('ERROR: ' + error.message);\n\n // TODO: better job of transforming error for user consumption\n this.log(`ERROR: ${operation} failed: ${error.message}`);\n\n // Let the app keep running by returning an empty result.\n return of(result as T);\n };\n }\n}\n\nexport class SearchResults {\n menuLinks: MenuLink[];\n count: number;\n}\n\nexport class SearchRequest {\n contentType: ContentType;\n contentFilter: ContentFilter;\n query: string;\n resultSet: number;\n quantityPerPage: number;\n showArchived: boolean;\n}\n\nexport class TreeNode {\n id: number;\n title: string;\n status: ContentStatus;\n createdOn: Date;\n children: TreeNode[];\n parentId: number;\n ordinal: number;\n}\n\nexport class FlatTreeNode {\n id: number;\n title: string;\n status: ContentStatus;\n createdOn: Date;\n children: TreeNode[];\n parentId: number;\n ordinal: number;\n expandable: boolean;\n level: number;\n}\n\nexport class MenuLink {\n id: number;\n href: string;\n title: string;\n parentId: number;\n ordinal: number;\n status: ContentStatus;\n displayImageId: number;\n type: ContentType;\n createdOn: Date;\n}\n\nexport class EditContentBundle {\n content: Content;\n hasAttachedImages: boolean;\n isMediaRelease: boolean;\n isArticle: boolean;\n isPressRelease: boolean;\n isBio: boolean;\n isPage: boolean;\n isExternalPage: boolean;\n isImage: boolean;\n isVideo: boolean;\n isAudio: boolean;\n isDocument: boolean;\n parentPageOptions: SelectOption[];\n sectionOptions: SelectOption[];\n}\n\nexport class Content {\n // Content\n id: number;\n status: ContentStatus;\n type: ContentType;\n title?: string;\n description?: string;\n body?: string;\n createdOn: Date;\n modifiedOn?: Date;\n activeOn?: Date;\n inactiveOn?: Date;\n searchWeight?: number;\n href?: string;\n urlSlug?: string;\n contentTags?: ContentTag[];\n audit?: Audit;\n recommendationWeight?: number;\n state?: string;\n displayImageId?: number;\n attachedImages?: ContentImage[];\n\n // Page\n parentId?: number;\n showInMenu?: boolean;\n showInRelated?: boolean;\n showInFooter?: boolean;\n ordinal?: number;\n isFeaturePage?: boolean;\n showAttachedImagesGallery?: boolean;\n showTagRelatedMediaReleases?: boolean;\n\n // Biography\n fullName?: string;\n branchOfService?: string;\n militaryRank?: string;\n positionTitle?: string;\n\n // Media release\n author?: string;\n affiliation?: string;\n location?: string;\n quote?: string;\n showInMediaGallery?: boolean;\n sectionId?: number;\n externalAsset?: ExternalAsset; // Also on External Page\n\n // Article\n showInLatestNews?: boolean;\n\n // Image\n dataUrl?: string;\n imageFile?: ImageFile;\n showInImageFeature?: boolean;\n\n // Video\n showInLatestVideos?: boolean;\n\n // Audio\n transcript?: Content;\n transcriptId?: number;\n spotifyAsset?: string;\n spotifyAssetId?: number;\n appleAsset?: string;\n appleAssetId?: number;\n\n // Press Release\n showInLatestPressReleases?: boolean;\n\n // Document\n documentFile?: DocumentFile;\n documentType?: string;\n}\n\nexport class ExternalAsset {\n id: number;\n provider: ExternalProvider;\n identifier: string;\n resourceRef: string;\n thumbRef: string;\n providerName: string;\n source: string;\n}\n\nexport class ContentImage {\n ordinal: number;\n id: number;\n image: Content;\n imageId: number;\n state?: string;\n}\n\nexport class DVIDSAssetBasic {\n id: string;\n title: string;\n date_Published: Date;\n thumbnail: string;\n url: string;\n}\n\nexport class ImageFile {\n width?: number;\n height?: number;\n aspectRatio?: number;\n imageType?: string;\n}\n\nexport class SelectOption {\n id: number;\n label: string;\n}\n\nexport class ContentTag {\n contentId?: number;\n tagId?: number;\n tag: Tag;\n}\n\nexport class Section {\n id: number;\n name: string;\n description: string;\n}\n\nexport class Audit {\n id: number;\n timestamp: Time;\n username: string;\n action: AuditAction;\n details: string;\n contentId: number;\n slideDeckId: number;\n}\n\nexport class DocumentFile {\n id: number;\n binary: Binary;\n documentType: string;\n documentSize: number;\n documentId: number;\n documentName: number;\n}","import { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CustomIconService {\n constructor(\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer\n ) { }\n init() {\n this.matIconRegistry.addSvgIcon(\n 'content_page',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_sheet_txt.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_biography',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_spread_text_bookmark.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_external_page',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_globe.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_article',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_webpage_img_txt.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_image',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_picture.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_video',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_video.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_audio',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/music_radio_ghettoblaster.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_press_release',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_message_txt.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_document',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_sheet_pencil.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'content_transcript',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_headset.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'slidedeck_content_rotator',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_elaboration_document_refresh.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'slidedeck_scrolling_feature',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_elaboration_browser_download.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'slidedeck_biography_feature',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_cards_diamonds.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'slidedeck_full_screen_feature',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_display.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'slidedeck_content_grid',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/software_layout-8boxes.svg')\n );\n this.matIconRegistry.addSvgIcon(\n 'spotlight_tag_feature',\n this.domSanitizer.bypassSecurityTrustResourceUrl('../assets/icons/basic_lightbulb.svg')\n );\n }\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoadingStateService {\n private loadingState: { [key: string]: { loading: BehaviorSubject; completed: BehaviorSubject } } = {};\n private errorState: { [key: string]: Subject } = {};\n\n startLoading(key: string | number): void {\n const keyString = key.toString();\n console.log(`startLoading called for key ${keyString}`);\n if (!this.loadingState[keyString]) {\n this.loadingState[keyString] = {\n loading: new BehaviorSubject(false),\n completed: new BehaviorSubject(false)\n };\n }\n this.loadingState[keyString].loading.next(true);\n this.loadingState[keyString].completed.next(false);\n }\n\n stopLoading(key: string | number): void {\n const keyString = key.toString();\n if (this.loadingState[keyString]) {\n this.loadingState[keyString].loading.next(false);\n this.loadingState[keyString].completed.next(true);\n console.log(`stopLoading called for key ${keyString}`);\n }\n }\n\n isLoading(key: string | number): Observable {\n const keyString = key.toString();\n if (!this.loadingState[keyString]) {\n this.loadingState[keyString] = {\n loading: new BehaviorSubject(false),\n completed: new BehaviorSubject(false)\n };\n }\n return this.loadingState[keyString].loading.asObservable();\n }\n\n isCompleted(key: string | number): Observable {\n const keyString = key.toString();\n if (!this.loadingState[keyString]) {\n this.loadingState[keyString] = {\n loading: new BehaviorSubject(false),\n completed: new BehaviorSubject(false)\n };\n }\n return this.loadingState[keyString].completed.asObservable();\n }\n\n getErrorObservable(key: string | number): Observable {\n const keyString = key.toString();\n if (!this.errorState[keyString]) {\n this.errorState[keyString] = new Subject();\n }\n return this.errorState[keyString].asObservable();\n }\n\n handleError(key: string | number, message: string) {\n const keyString = key.toString();\n if (!this.errorState[keyString]) {\n this.errorState[keyString] = new Subject();\n }\n this.errorState[keyString].next(message);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageService {\n messages: string[] = [];\n\n add(message: string) {\n this.messages.push(message);\n }\n\n clear() {\n this.messages = [];\n }\n}","import { Injectable } from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\n\n@Injectable()\nexport class SidenavService {\n private sidenav: MatSidenav;\n\n public isMobile = false;\n public isTablet = false;\n public showArchived = false;\n\n setSideNav(sidenav: MatSidenav) {\n this.sidenav = sidenav;\n }\n\n toggleSidenav() {\n if (this.sidenav) {\n this.sidenav.toggle();\n }\n }\n\n closeSidenavIfHandheld() {\n if (this.sidenav) {\n if (this.isMobile || this.isTablet) {\n this.sidenav.close();\n }\n }\n }\n\n setShowArchived(value: boolean) {\n this.showArchived = value;\n }\n\n toggleShowArchived() {\n this.showArchived = !this.showArchived;\n }\n}","// site-config.service.ts\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ReplaySubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class SiteConfigService {\n public siteConfig$: ReplaySubject = new ReplaySubject();\n\n private _siteConfig?: SiteConfiguration;\n\n constructor(private http: HttpClient) {}\n\n // The method your APP_INITIALIZER will call, returning a Promise\n public loadSiteConfig(): Promise {\n return new Promise((resolve, reject) => {\n this.http.get('/api/siteConfig/getSiteConfig')\n .subscribe({\n next: (config) => {\n this._siteConfig = config;\n this.siteConfig$.next(config);\n resolve(config);\n },\n error: (err) => reject(err)\n });\n });\n }\n\n // Synchronous access to the Azure config. Safe to call after APP_INITIALIZER completes\n public getAzureConfig(): AzureConfiguration {\n if (!this._siteConfig) {\n throw new Error('SiteConfig has not been loaded yet!');\n }\n return this._siteConfig.azureConfiguration;\n }\n}\n\nexport interface SiteConfiguration {\n targetOrganization: TargetOrganization;\n metadata: Metadata;\n azureConfiguration: AzureConfiguration;\n}\n\nexport interface Metadata {\n defaultAuthor: string;\n defaultAffiliation: string;\n defaultLocation: string;\n}\n\nexport interface TargetOrganization {\n commandAcronym?: string;\n commandFullName?: string;\n domainAndProtocol?: string;\n previewDomainAndProtocol?: string;\n domainName?: string;\n commandIdentifier?: string;\n commandDVIDSTags?: string;\n}\n\nexport interface AzureConfiguration {\n instance: string;\n tenantId: string;\n clientId: string;\n callbackPath: string;\n audience: string;\n domain: string;\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { SlideDeck } from './slide-deck.service';\n\n@Injectable()\nexport class SlideDeckSyncService {\n public $subject: Subject = new Subject();\n\n syncActiveSlideDeck(message: SlideDeck) {\n this.$subject.next(message);\n }\n\n getActiveSlideDeck(): Observable {\n return this.$subject.asObservable();\n }\n\n clearActiveSlideDeck() {\n this.$subject.next(null);\n }\n}","// @ts-nocheck\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { SlideDeckType } from '../enums/common.enums';\nimport { Content, MenuLink, Audit } from './content.service';\nimport { MessageService } from './message.service';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable()\nexport class SlideDeckService {\n constructor(private http: HttpClient, private messageService: MessageService) { }\n\n public getSlideDeck(slideDeckId: number) {\n this.messageService.clear();\n\n return this.http.get(`/api/slidedecks/getSlideDeck/${slideDeckId}`).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError(`getSlideDeck; id=${slideDeckId}`))\n );\n }\n\n public getSlideDecks(slideDeckType: SlideDeckType) {\n this.messageService.clear();\n\n const options = {\n params: new HttpParams()\n .set('slideDeckType', slideDeckType.toString())\n };\n\n return this.http.get('/api/slidedecks/getSlideDecks/', options).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError('getSlideDecks'))\n );\n }\n\n public createSlideDeck(slideDeckType: SlideDeckType, contentIds: number[]) {\n this.messageService.clear();\n\n const formData = new FormData();\n\n formData.append('slideDeckType', slideDeckType.toString());\n\n formData.append('contentIds', contentIds.toString());\n\n return this.http.post('/api/slideDecks/createSlideDeck', formData).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError('createSlideDeck'))\n );\n }\n\n public updateSlideDeck(slideDeck: SlideDeck): Observable> {\n this.messageService.clear();\n\n return this.http.post('/api/slidedecks/updateSlideDeck', slideDeck, { observe: 'response' }).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError>(`updateSlideDeck; id=${slideDeck.id}`))\n );\n }\n\n public getAudits(slideDeckId: number) {\n this.messageService.clear();\n \n return this.http.get(`/api/slideDecks/getAudits/${slideDeckId}`).pipe(\n //tap(_ => this.log(`Fetched content; id=${contentId}`)),\n catchError(this.handleError(`getAudits; id=${slideDeckId}`))\n );\n }\n\n /** Log a ContentService message with the MessageService */\n private log(message: string) {\n\n this.messageService.add(`ContentService: ${message}`);\n }\n\n /**\n * Handle Http operation that failed.\n * Let the app continue.\n * @param operation - name of the operation that failed\n * @param result - optional value to return as the observable result\n */\n private handleError(operation = 'operation', result?: T) {\n return (error: Error): Observable => {\n\n // TODO: send the error to remote logging infrastructure\n console.error(error.message); // log to console instead\n\n // TODO: better job of transforming error for user consumption\n this.log(`ERROR: ${operation} failed: ${error.message}`);\n\n // Let the app keep running by returning an empty result.\n return of(result as T);\n };\n }\n}\n\nexport class SlideDeck {\n id: number;\n isActive: boolean;\n slideDeckType: SlideDeckType;\n slideDeckLocation: number;\n title: string;\n createdOn: Date;\n slides: Slide[];\n}\n\nexport class Slide {\n id: number;\n isActive: boolean;\n captionPosition: number;\n ordinal: number;\n contentId: number;\n displayImageId: number;\n slideDeckId: number;\n content?: Content; // Nav property\n slideDeck?: SlideDeck; // Nav property,\n state?: string;\n dataUrl?: string;\n title?: string;\n description?: string;\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Spotlight } from './spotlight.service';\n\n@Injectable()\nexport class SpotlightSyncService {\n public $subject: Subject = new Subject();\n\n syncActiveSpotlight(message: Spotlight) {\n this.$subject.next(message);\n }\n\n getActiveSpotlight(): Observable {\n return this.$subject.asObservable();\n }\n\n clearActiveSpotlight() {\n this.$subject.next(null);\n }\n}","// @ts-nocheck\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { MenuLink, Audit } from './content.service';\nimport { MessageService } from './message.service';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { SpotlightType } from '../enums/common.enums';\nimport { Tag } from './tag.service';\n\n@Injectable()\nexport class SpotlightService {\n constructor(private http: HttpClient, private messageService: MessageService) { }\n\n public getSpotlight(spotlightId: number) {\n this.messageService.clear();\n\n return this.http.get(`/api/spotlights/getSpotlight/${spotlightId}`).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError(`getSpotlight; id=${spotlightId}`))\n );\n }\n\n public getSpotlights(spotlightType: SpotlightType) {\n this.messageService.clear();\n\n const options = {\n params: new HttpParams()\n .set('spotlightType', spotlightType.toString())\n };\n\n return this.http.get('/api/spotlights/getSpotlights/', options).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError('getSpotlights'))\n );\n }\n\n public createSpotlight(spotlightType: SpotlightType, tagIds: number[]) {\n this.messageService.clear();\n\n const formData = new FormData();\n\n formData.append('tagIds', tagIds.toString());\n\n return this.http.post('/api/spotlights/createSpotlight', formData).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError('createSpotlight'))\n );\n }\n\n public updateSpotlight(spotlight: Spotlight): Observable> {\n this.messageService.clear();\n\n return this.http.post('/api/spotlights/updateSpotlight', spotlight, { observe: 'response' }).pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError>(`updateSpotlight; id=${spotlight.id}`))\n );\n }\n\n public getAudits(spotlightId: number) {\n this.messageService.clear();\n\n return this.http.get(`/api/spotlights/getAudits/${spotlightId}`).pipe(\n //tap(_ => this.log(`Fetched content; id=${contentId}`)),\n catchError(this.handleError(`getAudits; id=${spotlightId}`))\n );\n }\n\n /** Log a ContentService message with the MessageService */\n private log(message: string) {\n\n this.messageService.add(`ContentService: ${message}`);\n }\n\n /**\n * Handle Http operation that failed.\n * Let the app continue.\n * @param operation - name of the operation that failed\n * @param result - optional value to return as the observable result\n */\n private handleError(operation = 'operation', result?: T) {\n return (error: any): Observable => {\n\n // TODO: send the error to remote logging infrastructure\n console.error(error.message); // log to console instead\n\n // TODO: better job of transforming error for user consumption\n this.log(`ERROR: ${operation} failed: ${error.message}`);\n\n // Let the app keep running by returning an empty result.\n return of(result as T);\n };\n }\n}\n\nexport class Spotlight {\n id: number;\n isActive: boolean;\n title: string;\n description: string;\n createdOn: Date;\n modifiedOn?: Date;\n displayImageId?: number;\n dataUrl?: string;\n state?: string;\n spotlightType: SpotlightType;\n spotlightTags: SpotlightTag[];\n}\n\nexport class SpotlightTag {\n spotlightId: number;\n tagId: number;\n tag: Tag;\n}","// @ts-nocheck\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { MessageService } from './message.service';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\n\n@Injectable()\nexport class TagService {\n constructor(private http: HttpClient, private messageService: MessageService) { }\n public getTags() {\n this.messageService.clear();\n\n return this.http.get('/api/tags/getTags/').pipe(\n //tap(_ => this.log(`Fetched content bundle; id=${contentId}`)),\n catchError(this.handleError('getTags'))\n );\n }\n\n /** Log a ContentService message with the MessageService */\n private log(message: string) {\n this.messageService.add(`ContentService: ${message}`);\n }\n\n /**\n * Handle Http operation that failed.\n * Let the app continue.\n * @param operation - name of the operation that failed\n * @param result - optional value to return as the observable result\n */\n private handleError(operation = 'operation', result?: T) {\n return (error: any): Observable => {\n\n // TODO: send the error to remote logging infrastructure\n console.error(error.message); // log to console instead\n\n // TODO: better job of transforming error for user consumption\n this.log(`ERROR: ${operation} failed: ${error.message}`);\n\n // Let the app keep running by returning an empty result.\n return of(result as T);\n };\n }\n}\n\nexport class Tag {\n id: number;\n name: string;\n}","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nexport interface SessionExtendDialogData {\n initialCountdown: number; // in seconds\n}\n\n@Component({\n selector: 'session-extend-dialog',\n template: `\n

Session Expiring

\n \n

Your session will expire in {{ countdown }} seconds.

\n
\n \n \n \n `\n})\nexport class SessionExtendDialog implements OnInit, OnDestroy {\n countdown: number;\n private intervalId: any;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: SessionExtendDialogData\n ) {\n this.countdown = data.initialCountdown;\n }\n\n ngOnInit() {\n this.intervalId = setInterval(() => {\n this.countdown--;\n if (this.countdown <= 0) {\n this.dialogRef.close(false);\n }\n }, 1000);\n }\n\n onExtend() {\n this.dialogRef.close(true);\n }\n\n ngOnDestroy() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n }\n}\n","// @ts-nocheck\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { ContentService, TreeNode, SearchRequest, MenuLink, FlatTreeNode } from '../services/content.service';\nimport { ContentType, ImageSize, ContentFilter } from '../enums/common.enums';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTree } from '@angular/material/tree';\nimport { of as observableOf, Subscription, Subject, Observable } from 'rxjs';\nimport { ContentSyncService } from '../services/content-sync.service';\nimport { LoadingStateService } from '../services/loading-state.service';\nimport { Router } from '@angular/router';\nimport { ExternalAssetDialog } from '../external-asset/external-asset.component';\nimport { ContentTypeSlugPipe } from '../pipes/content-type-pipe';\nimport { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { SidenavService } from '../services/sidenav.service';\n\n@Component({\n selector: 'sidenav-content',\n templateUrl: './sidenav-content.component.html',\n styleUrls: ['./sidenav-content.component.scss']\n})\nexport class SidenavContent implements OnInit {\n constructor(private contentService: ContentService, private sidenavService: SidenavService, private contentTypeSlugPipe: ContentTypeSlugPipe,\n private contentSyncService: ContentSyncService, private router: Router, public dialog: MatDialog, public snackBar: MatSnackBar,\n private loadingStateService: LoadingStateService) {\n\n this.contentService.search(this.searchRequest)\n .subscribe(searchResults => {\n this.searching = false;\n\n if (this.menuLinks.length === 0) {\n this.noResults = true;\n }\n\n if (searchResults.menuLinks.length > 0) {\n this.noResults = false;\n\n if (this.contentType === ContentType.page) {\n this.treeDataSource.data = [];\n }\n\n this.menuLinks = this.menuLinks.concat(searchResults.menuLinks);\n\n searchResults.count > this.quantityPerPage ? this.showLoadMore = true : this.showLoadMore = false;\n }\n });\n }\n\n @Input() contentType: ContentType = ContentType.all;\n @ViewChild(MatButton, { static: false }) createContentButton !: MatButton;\n @ViewChild(MatButton, { static: false }) uploadFileButton !: MatButton;\n @ViewChild(MatTree, { static: false }) pageHierarchyTree !: MatTree;\n\n private activeContentSubscription: Subscription;\n menuLinks: MenuLink[] = [];\n private _transformer = (node: TreeNode, level: number) => {\n return {\n expandable: !!node.children && node.children.length > 0,\n id: node.id,\n title: node.title,\n status: node.status,\n createdOn: node.createdOn,\n children: node.children,\n parentId: node.parentId,\n ordinal: node.ordinal,\n level: level\n };\n };\n treeControl = new FlatTreeControl(node => node.level, node => node.expandable);\n treeFlattener = new MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children);\n treeDataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);\n expandedNodeSet = new Set();\n private _getLevel = (node: FlatTreeNode) => node.level;\n private _isExpandable = (node: FlatTreeNode) => node.expandable;\n private _getChildren = (node: TreeNode): Observable => observableOf(node.children);\n hasChild = (_: number, node: FlatTreeNode) => node.expandable;\n visibleNodes(): TreeNode[] {\n this.rememberExpandedTreeNodes(this.treeControl, this.expandedNodeSet);\n\n const result = [];\n\n function addExpandedChildren(node: TreeNode, expanded: Set) {\n result.push(node);\n if (expanded.has(node.id)) {\n node.children.map(child => addExpandedChildren(child, expanded));\n }\n }\n this.treeDataSource.data.forEach(node => {\n addExpandedChildren(node, this.expandedNodeSet);\n });\n\n return result;\n }\n typeRouteName: string;\n showUploader: boolean;\n showLoadMore = false;\n acceptedFileTypes: string;\n externalUrl: string;\n loadingExternalContent = false;\n noResults = false;\n resultSet = 1;\n queryInput = '';\n quantityPerPage = 8;\n searchRequest: Subject = new Subject();\n imageSize = ImageSize;\n searching = false;\n //commandDVIDSTags: string;\n importComplete: Subject = new Subject();\n private subscriptions: Subscription[] = [];\n\n ngOnInit() {\n this.searching = true;\n\n this.showUploader = this.contentType === ContentType.image || this.contentType === ContentType.document;\n\n if (this.contentType === ContentType.image) {\n this.acceptedFileTypes = 'image/*';\n }\n\n if (this.contentType === ContentType.document) {\n this.acceptedFileTypes = '.pdf,.doc,.docx,.ppt,.pptx';\n }\n\n if (this.contentType === ContentType.page) {\n this.treeFlattener = new MatTreeFlattener(this._transformer, this._getLevel, this._isExpandable, this._getChildren);\n\n this.treeControl = new FlatTreeControl(this._getLevel, this._isExpandable);\n\n this.treeDataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);\n\n this.getPageHierarchy();\n }\n else {\n this.getResultPage();\n }\n\n this.activeContentSubscription = this.contentSyncService.getActiveContent()\n .subscribe(activeContent => {\n if (activeContent) {\n if (this.treeDataSource.data.length > 0) { // Update the page tree\n const getActiveTreeNode = function (nestedTreeNodes, id): TreeNode {\n if (nestedTreeNodes) {\n for (let i = 0; i < nestedTreeNodes.length; i++) {\n if (nestedTreeNodes[i].id === id) {\n return nestedTreeNodes[i];\n }\n const found = getActiveTreeNode(nestedTreeNodes[i].children, id);\n\n if (found) return found;\n }\n }\n };\n\n const activeTreeNode: TreeNode = getActiveTreeNode(this.treeDataSource.data, activeContent.id);\n\n if (activeTreeNode.parentId !== activeContent.parentId) {\n this.contentService.getPageHierarchy()\n .subscribe(pages => {\n if (pages) {\n this.treeDataSource.data = pages;\n }\n\n this.treeControl.expand(this.treeControl.dataNodes.find(treeNode => treeNode.id === activeContent.parentId));\n });\n }\n else {\n activeTreeNode.id = activeContent.id;\n\n activeTreeNode.title = activeContent.title;\n\n activeTreeNode.status = activeContent.status;\n\n activeTreeNode.parentId = activeContent.parentId;\n\n const changedData = JSON.parse(JSON.stringify(this.treeDataSource.data));\n\n this.rebuildTreeForData(changedData);\n }\n }\n else { // Update the content list\n const index = this.menuLinks.map(function (content) { return content.id; }).indexOf(activeContent.id);\n\n const activeMenuLink = this.menuLinks[index];\n\n activeMenuLink.title = activeContent.title;\n\n activeMenuLink.href = activeContent.href;\n\n activeMenuLink.displayImageId = activeContent.displayImageId;\n\n activeMenuLink.status = activeContent.status;\n }\n }\n });\n\n this.subscriptions.push(\n this.importComplete.subscribe(() => {\n // logic after import has completed\n // e.g. refresh data or change UI state\n this.getResultPage();\n })\n );\n }\n\n private getPageHierarchy(): void {\n this.contentService.getPageHierarchy(this.sidenavService.showArchived)\n .subscribe(pages => {\n this.searching = false;\n\n if (pages) {\n this.noResults = false;\n\n this.treeDataSource.data = pages;\n }\n });\n }\n\n openSnackBar(message: string, action: string) {\n this.snackBar.open(message, action, {\n duration: 6000,\n });\n }\n\n /**\n * Opens a dialog for specific content type.\n * Otherwise, this function will skip a dialog all together.\n */\n openDialog() {\n this.externalUrl = null;\n\n const placeholder = ((type) => {\n switch (type) {\n case ContentType.article:\n case ContentType.audio:\n return 'DVIDS URL';\n case ContentType.video:\n return 'DVIDS or YouTube URL';\n default:\n return null;\n }\n })(this.contentType);\n\n if (!placeholder) {\n this.createContent();\n return;\n }\n\n const width = this.sidenavService.isMobile ? '100%' : '60%';\n\n const maxWidth = this.sidenavService.isMobile ? '90vw' : '80vw';\n\n const dialogRef = this.dialog.open(ExternalAssetDialog, {\n width: width,\n maxWidth: maxWidth,\n data: {\n externalUrl: this.externalUrl,\n contentType: this.contentType,\n placeholder: placeholder,\n importComplete: this.importComplete\n },\n });\n\n // Import content from DVIDS based on button click\n dialogRef.componentInstance.importRequest.subscribe(\n (contentData: { url: string; id: string | number }) => {\n if (contentData.url) {\n this.contentService\n .createContent(this.contentType, null, contentData.url)\n .subscribe((event) => {\n if (event.ok) {\n console.log('Response received: ', event);\n const newMenuLink = event.body as MenuLink;\n this.menuLinks.unshift(newMenuLink);\n const routeAnchor = '/media-releases/';\n this.typeRouteName = this.contentTypeSlugPipe.transform(\n this.contentType\n );\n this.router.navigate([\n routeAnchor + this.typeRouteName + '/edit',\n newMenuLink.id,\n ]);\n } else {\n this.loadingStateService.handleError(contentData.id, 'Something went wrong');\n }\n // Stop loading irrespective of success or failure of content creation\n this.loadingStateService.stopLoading(contentData.id);\n },\n // handling network or other errors here\n (error) => {\n console.log('Error block hit with: ', error);\n this.loadingStateService.handleError(contentData.id, 'Error: ' + error.error);\n this.loadingStateService.stopLoading(contentData.id);\n });\n }\n }\n );\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n if (data.externalUrl) {\n this.loadingExternalContent = true;\n\n this.externalUrl = data.externalUrl;\n }\n\n this.createContent();\n\n dialogRef.componentInstance.data = null;\n }\n });\n }\n\n processFile(file: File) {\n this.createContent(file);\n }\n\n createContent(file?: File) {\n this.typeRouteName = this.contentTypeSlugPipe.transform(this.contentType);\n\n this.showUploader ? this.uploadFileButton.disabled = true : this.createContentButton.disabled = true;\n\n this.contentService.createContent(this.contentType, file, this.externalUrl)\n .subscribe(event => {\n if (event.ok) {\n const newMenuLink = event.body as MenuLink;\n\n this.showUploader ? this.uploadFileButton.disabled = false : this.createContentButton.disabled = false;\n\n this.loadingExternalContent = false;\n\n if (this.treeDataSource.data.length > 0) {\n const newTreeNode: TreeNode = {\n id: newMenuLink.id,\n createdOn: new Date(),\n parentId: null,\n children: null,\n ordinal: 0,\n status: 0,\n title: 'New page'\n };\n\n this.treeDataSource.data.unshift(newTreeNode);\n\n const changedData = JSON.parse(JSON.stringify(this.treeDataSource.data));\n\n // Trigger change control\n this.rebuildTreeForData(changedData);\n }\n else {\n this.menuLinks.unshift(newMenuLink);\n }\n\n const isPage = this.contentType === ContentType.page || this.contentType === ContentType.biography || this.contentType === ContentType.externalPage;\n\n const routeAnchor = isPage ? '/menu-structure/' : '/media-releases/';\n\n this.router.navigate([routeAnchor + this.typeRouteName + '/edit', newMenuLink.id]);\n }\n else {\n this.openSnackBar('Something went wrong', 'OK');\n }\n });\n }\n\n ngOnDestroy() {\n if (this.activeContentSubscription) {\n this.activeContentSubscription.unsubscribe();\n }\n }\n\n closeSidenavIfHandheld() {\n this.sidenavService.closeSidenavIfHandheld();\n }\n\n filterArchived(event) {\n this.sidenavService.setShowArchived(event.checked);\n\n if (this.contentType === ContentType.page) {\n this.getPageHierarchy();\n }\n else {\n this.search(this.queryInput);\n }\n }\n\n search(queryInput: string) {\n this.searching = true;\n\n this.treeDataSource.data = [];\n\n this.menuLinks = [];\n\n if (queryInput === '') {\n this.getResultPage();\n }\n else {\n const request = new SearchRequest();\n\n request.resultSet = this.resultSet;\n\n request.query = this.queryInput;\n\n request.contentType = this.contentType;\n\n request.contentFilter = ContentFilter.all;\n\n request.quantityPerPage = this.quantityPerPage;\n\n request.showArchived = this.sidenavService.showArchived;\n\n this.searchRequest.next(request);\n }\n }\n\n getResultPage() {\n this.contentService.getResultPage(this.queryInput, this.contentType, ContentFilter.all, this.resultSet, this.quantityPerPage, this.sidenavService.showArchived)\n .subscribe(searchResults => {\n this.searching = false;\n\n if (this.menuLinks.length === 0) {\n this.noResults = true;\n }\n\n if (searchResults.menuLinks.length > 0) {\n this.noResults = false;\n\n this.menuLinks = this.menuLinks.concat(searchResults.menuLinks);\n\n searchResults.count > this.quantityPerPage ? this.showLoadMore = true : this.showLoadMore = false;\n }\n });\n }\n\n clearSearch() {\n this.menuLinks = [];\n\n this.queryInput = '';\n\n if (this.contentType === ContentType.page) {\n this.getPageHierarchy();\n }\n else {\n this.getResultPage();\n }\n }\n\n loadMore() {\n this.resultSet++;\n\n this.showLoadMore = false;\n\n // this.showLoadingMore = true;\n\n this.getResultPage();\n }\n\n dropPageNode(event: CdkDragDrop) {\n // ignore drops outside of the tree\n if (!event.isPointerOverContainer) return;\n\n // construct a list of visible nodes, this will match the DOM.\n // the cdkDragDrop event.currentIndex jibes with visible nodes.\n // it calls rememberExpandedTreeNodes to persist expand state\n const visibleNodes = this.visibleNodes();\n\n // deep clone the data source so we can mutate it\n const changedData = JSON.parse(JSON.stringify(this.treeDataSource.data));\n\n const node = event.item.data;\n\n const currentIndex = event.currentIndex;\n\n const updatedBranch = this.moveNode(node, visibleNodes, changedData, currentIndex);\n\n // update the database\n this.contentService.updatePageHierarchyBranch(updatedBranch).subscribe(event => {\n if (event.ok) {\n this.openSnackBar('Page hierarchy updated', 'OK');\n }\n else {\n this.openSnackBar('Something went wrong', 'OK');\n }\n });\n }\n\n private rebuildTreeForData(treeNodes: TreeNode[]) {\n this.rememberExpandedTreeNodes(this.treeControl, this.expandedNodeSet);\n\n this.treeDataSource.data = treeNodes;\n\n this.forgetMissingExpandedNodes(this.treeControl, this.expandedNodeSet);\n\n this.expandNodesById(this.treeControl.dataNodes, Array.from(this.expandedNodeSet));\n }\n\n private moveNode(node: TreeNode, visibleNodes: TreeNode[], changedData: TreeNode[], currentIndex: number): TreeNode[] {\n // recursive find function to find siblings of node\n function findNodeSiblings(arr: TreeNode[], id: number): TreeNode[] {\n let result, subResult;\n arr.forEach(item => {\n if (item.id === id) {\n result = arr;\n } else if (item.children) {\n subResult = findNodeSiblings(item.children, id);\n if (subResult) result = subResult;\n }\n });\n return result;\n }\n\n // remove the node from its old place\n // const node = event.item.data;\n const siblings = findNodeSiblings(changedData, node.id as number);\n const siblingIndex = siblings.findIndex(n => n.id === node.id);\n const nodeToInsert: TreeNode = siblings.splice(siblingIndex, 1)[0];\n\n // determine where to insert the node\n const nodeAtDest = visibleNodes[currentIndex];\n\n if (nodeAtDest.id === nodeToInsert.id) return;\n\n // determine drop index relative to destination array\n let relativeIndex = currentIndex; // default if no parent\n const nodeAtDestFlatNode = this.treeControl.dataNodes.find(n => nodeAtDest.id === n.id);\n const parent = this.getParentNode(nodeAtDestFlatNode);\n if (parent) {\n const parentIndex = visibleNodes.findIndex(n => n.id === parent.id) + 1;\n relativeIndex = currentIndex - parentIndex;\n }\n // insert node \n const newSiblings = findNodeSiblings(changedData, nodeAtDest.id);\n if (!newSiblings) return;\n newSiblings.splice(relativeIndex, 0, nodeToInsert);\n newSiblings.forEach((sibling, index) => {\n sibling.ordinal = index;\n if (parent) {\n sibling.parentId = parent.id;\n }\n else {\n sibling.parentId = null;\n }\n });\n\n // rebuild tree with mutated data\n this.rebuildTreeForData(changedData);\n\n const updatedBranch = this.pageHierarchyTree.treeControl.dataNodes.filter(dataNode => {\n if (parent) {\n return dataNode.parentId === parent.id;\n }\n else {\n return dataNode.parentId === null;\n }\n });\n\n return updatedBranch;\n }\n\n private rememberExpandedTreeNodes(\n treeControl: FlatTreeControl,\n expandedNodeSet: Set\n ) {\n if (treeControl.dataNodes) {\n treeControl.dataNodes.forEach((node) => {\n if (treeControl.isExpandable(node) && treeControl.isExpanded(node)) {\n // capture latest expanded state\n expandedNodeSet.add(node.id);\n }\n });\n }\n }\n\n private forgetMissingExpandedNodes(\n treeControl: FlatTreeControl,\n expandedNodeSet: Set\n ) {\n if (treeControl.dataNodes) {\n expandedNodeSet.forEach((nodeId) => {\n // maintain expanded node state\n if (!treeControl.dataNodes.find((n) => n.id === nodeId)) {\n // if the tree doesn't have the previous node, remove it from the expanded list\n expandedNodeSet.delete(nodeId);\n }\n });\n }\n }\n\n private expandNodesById(flatNodes: FlatTreeNode[], ids: number[]) {\n if (!flatNodes || flatNodes.length === 0) return;\n const idSet = new Set(ids);\n return flatNodes.forEach((node) => {\n if (idSet.has(node.id)) {\n this.treeControl.expand(node);\n let parent = this.getParentNode(node);\n while (parent) {\n this.treeControl.expand(parent);\n parent = this.getParentNode(parent);\n }\n }\n });\n }\n\n private getParentNode(node: FlatTreeNode): FlatTreeNode | null {\n const currentLevel = node.level;\n if (currentLevel < 1) {\n return null;\n }\n const startIndex = this.treeControl.dataNodes.indexOf(node) - 1;\n for (let i = startIndex; i >= 0; i--) {\n const currentNode = this.treeControl.dataNodes[i];\n if (currentNode.level < currentLevel) {\n return currentNode;\n }\n }\n return null;\n }\n}","// @ts-nocheck\nimport { OnInit, Component, Input, ViewChild, Inject } from '@angular/core';\nimport { SlideDeckService, SlideDeck, Slide } from '../services/slide-deck.service';\nimport { Router } from '@angular/router';\nimport { SlideDeckType, ImageSize, ContentFilter, ContentType } from '../enums/common.enums';\nimport { MenuLink } from '../services/content.service';\nimport { SlideDeckTypeSlugPipe } from '../pipes/slide-deck-type-pipe';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ContentDialog } from '../content-dialog/content-dialog.component';\nimport { SlideDeckSyncService } from '../services/slide-deck-sync.service';\nimport { Subscription } from 'rxjs';\nimport { SidenavService } from '../services/sidenav.service';\n\n@Component({\n selector: 'sidenav-slide-decks',\n templateUrl: './sidenav-slide-decks.component.html',\n styleUrls: ['./sidenav-slide-decks.component.scss']\n})\nexport class SidenavSlideDecks implements OnInit {\n constructor(private slideDeckService: SlideDeckService,\n private router: Router, private slideDeckTypeSlugPipe: SlideDeckTypeSlugPipe, public dialog: MatDialog,\n private sidenavService: SidenavService, private slideDeckSyncService: SlideDeckSyncService) {\n }\n\n @Input() slideDeckType: SlideDeckType = -1;\n\n activeSlideDeckSubscription: Subscription;\n noResults = true;\n typeRouteName: string;\n menuLinks: MenuLink[] = [];\n attachedIds: number[] = [];\n imageSize = ImageSize;\n contentType = ContentType;\n searching = false;\n isMobile = false;\n isTablet = false;\n\n @ViewChild(MatButton, { static: false }) createSlideDeckButton !: MatButton;\n\n ngOnInit(): void {\n this.searching = true;\n\n this.isMobile = this.sidenavService.isMobile;\n\n this.isTablet = this.sidenavService.isTablet;\n\n this.slideDeckService.getSlideDecks(this.slideDeckType).subscribe(slideDecks => {\n if (slideDecks.length > 0) {\n this.searching = false;\n\n this.noResults = false;\n }\n\n this.menuLinks = slideDecks;\n });\n\n this.activeSlideDeckSubscription = this.slideDeckSyncService.getActiveSlideDeck()\n .subscribe(activeSlideDeck => {\n if (activeSlideDeck) {\n const index = this.menuLinks.map(function (slideDeck) { return slideDeck.id; }).indexOf(activeSlideDeck.id);\n\n const activeMenuLink = this.menuLinks[index];\n\n activeMenuLink.title = activeSlideDeck.title;\n\n activeMenuLink.displayImageId = activeSlideDeck.slides[0].displayImageId;\n }\n });\n }\n\n openSlideDeckContentDialog(slideDeckId: number): void {\n let contentFilter: ContentFilter = ContentFilter.all;\n\n let quantityPerPage = 28;\n\n if (this.isMobile) {\n quantityPerPage = 8;\n }\n\n if (this.isTablet) {\n quantityPerPage = 16;\n }\n\n const dialogWidth = this.isMobile ? '100%' : '1000px';\n\n switch (this.slideDeckType) {\n case SlideDeckType.biographyFeature:\n contentFilter = ContentFilter.biographies;\n break;\n case SlideDeckType.fullScreenFeature:\n contentFilter = ContentFilter.images;\n break;\n default:\n contentFilter = ContentFilter.all;\n break;\n }\n\n const dialogRef = this.dialog.open(ContentDialog, {\n width: dialogWidth,\n panelClass: 'slide-deck-content-dialog',\n data: {\n contentFilter: contentFilter,\n attachedIds: [],\n quantityPerPage: quantityPerPage\n }\n });\n\n dialogRef.afterClosed().subscribe(attachedIds => {\n if (attachedIds) {\n this.attachedIds = attachedIds;\n\n if (!slideDeckId) {\n this.createSlideDeck();\n\n this.closeSidenavIfHandheld();\n }\n }\n });\n }\n\n createSlideDeck() {\n this.typeRouteName = this.slideDeckTypeSlugPipe.transform(this.slideDeckType);\n\n this.slideDeckService.createSlideDeck(this.slideDeckType, this.attachedIds)\n .subscribe(newMenuLink => {\n this.menuLinks.unshift(newMenuLink);\n\n this.router.navigate(['/home-page/' + this.typeRouteName + '/edit', newMenuLink.id]);\n });\n }\n\n closeSidenavIfHandheld() {\n this.sidenavService.closeSidenavIfHandheld();\n }\n}","// @ts-nocheck\nimport { OnInit, Component, Input, ViewChild, Inject } from '@angular/core';\nimport { SpotlightService, Spotlight } from '../services/spotlight.service';\nimport { Router } from '@angular/router';\nimport { SpotlightType, ImageSize, ContentFilter } from '../enums/common.enums';\nimport { MenuLink } from '../services/content.service';\nimport { SpotlightTypeSlugPipe } from '../pipes/spotlight-type-pipe';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SpotlightSyncService } from '../services/spotlight-sync.service';\nimport { Subscription } from 'rxjs';\nimport { SidenavService } from '../services/sidenav.service';\nimport { TagDialog } from '../tag-dialog/tag-dialog.component';\n\n@Component({\n selector: 'sidenav-spotlights',\n templateUrl: './sidenav-spotlights.component.html',\n styleUrls: ['./sidenav-spotlights.component.scss']\n})\nexport class SidenavSpotlights implements OnInit {\n constructor(private spotlightService: SpotlightService,\n private router: Router, private spotlightSlugPipe: SpotlightTypeSlugPipe, public dialog: MatDialog,\n private sidenavService: SidenavService, private spotlightSyncService: SpotlightSyncService) {\n }\n\n @Input() spotlightType: SpotlightType;\n\n activeSpotlightSubscription: Subscription;\n noResults = true;\n typeRouteName: string;\n menuLinks: MenuLink[] = [];\n attachedIds: number[] = [];\n imageSize = ImageSize;\n searching = false;\n isMobile = false;\n isTablet = false;\n\n @ViewChild(MatButton, { static: false }) createSpotlightButton !: MatButton;\n\n ngOnInit(): void {\n this.searching = true;\n\n this.isMobile = this.sidenavService.isMobile;\n\n this.isTablet = this.sidenavService.isTablet;\n\n this.spotlightService.getSpotlights(this.spotlightType).subscribe(spotlights => {\n if (spotlights.length > 0) {\n this.searching = false;\n\n this.noResults = false;\n }\n\n this.menuLinks = spotlights;\n });\n\n this.activeSpotlightSubscription = this.spotlightSyncService.getActiveSpotlight()\n .subscribe(activeSpotlight => {\n if (activeSpotlight) {\n const index = this.menuLinks.map(function (spotlight) { return spotlight.id; }).indexOf(activeSpotlight.id);\n\n const activeMenuLink = this.menuLinks[index];\n\n activeMenuLink.title = activeSpotlight.title;\n\n activeMenuLink.displayImageId = activeSpotlight.displayImageId;\n }\n });\n }\n\n openSpotlightTagsDialog(spotlightId: number): void {\n const dialogWidth = this.isMobile ? '100%' : '1000px';\n\n const dialogRef = this.dialog.open(TagDialog, {\n width: dialogWidth,\n panelClass: 'tag-dialog',\n data: {\n attachedIds: [],\n }\n });\n\n dialogRef.afterClosed().subscribe(attachedIds => {\n if (attachedIds) {\n this.attachedIds = attachedIds;\n\n if (!spotlightId) {\n this.createSpotlight();\n\n this.closeSidenavIfHandheld();\n }\n }\n });\n }\n\n createSpotlight() {\n this.spotlightService.createSpotlight(this.spotlightType, this.attachedIds)\n .subscribe(newMenuLink => {\n this.menuLinks.unshift(newMenuLink);\n\n const slugPipe = new SpotlightTypeSlugPipe();\n\n const urlSlug = slugPipe.transform(this.spotlightType);\n\n this.router.navigate(['/home-page/' + urlSlug + '/edit', newMenuLink.id]);\n });\n }\n\n closeSidenavIfHandheld() {\n this.sidenavService.closeSidenavIfHandheld();\n }\n}\n\nfunction TagsDialog(TagsDialog: any, arg1: { width: string; panelClass: string; data: { attachedIds: undefined[]; }; }) {\n throw new Error('Function not implemented.');\n}\n","import { Component, OnInit, ViewChild, ChangeDetectorRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ContentType, SidenavCategory, SlideDeckType, SpotlightType } from '../enums/common.enums';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { MediaMatcher } from '@angular/cdk/layout';\nimport { SidenavService } from '../services/sidenav.service';\nimport { SiteConfigService } from '../services/site-config.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n templateUrl: './sidenav.component.html',\n styleUrls: ['./sidenav.component.scss']\n})\nexport class SidenavComponent implements OnInit {\n contentType: ContentType;\n sidenavCategory: SidenavCategory;\n slideDeckType: SlideDeckType;\n spotlightType: SpotlightType;\n mobileQuery: MediaQueryList;\n tabletQuery: MediaQueryList;\n siteConfigSubscription: Subscription;\n isHOA: boolean;\n\n private _mobileQueryListener: () => void;\n\n @ViewChild(MatSidenav, { static: true }) public sidenav !: MatSidenav;\n\n constructor(private route: ActivatedRoute, private sidenavService: SidenavService, changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, private siteConfigService: SiteConfigService) {\n this.siteConfigSubscription = siteConfigService.siteConfig$.subscribe(siteConfig => {\n this.isHOA = siteConfig.targetOrganization.commandIdentifier === 'HOA';\n });\n this.mobileQuery = media.matchMedia('(max-width: 600px)');\n this.tabletQuery = media.matchMedia('(max-width: 768px)');\n this._mobileQueryListener = () => changeDetectorRef.detectChanges();\n this.mobileQuery.addListener(this._mobileQueryListener);\n }\n\n ngOnInit() {\n this.route.data.subscribe(data => {\n this.contentType = data.contentType;\n this.slideDeckType = data.slideDeckType;\n this.spotlightType = data.spotlightType;\n this.sidenavCategory = data.sidenavCategory;\n });\n\n this.sidenavService.isMobile = this.mobileQuery.matches;\n\n this.sidenavService.isTablet = !this.mobileQuery.matches && this.tabletQuery.matches;\n\n this.sidenavService.setSideNav(this.sidenav);\n }\n}","// @ts-nocheck\nimport { Resolve, ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { SlideDeck, SlideDeckService } from '../services/slide-deck.service';\nimport { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SlideDeckEditResolver implements Resolve {\n constructor(private service: SlideDeckService, private router: Router) { }\n\n resolve(route: ActivatedRouteSnapshot): SlideDeck | Observable | Promise {\n return this.service.getSlideDeck(route.params.slidedeckid)\n .pipe(\n tap(slideDeck => {\n if (!slideDeck) {\n this.router.navigate(['/404']);\n }\n })\n );\n }\n}","import { OnInit, Component, ViewChild, ChangeDetectorRef, AfterViewInit } from '@angular/core';\nimport { SlideDeckService, SlideDeck, Slide } from '../services/slide-deck.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { ImageSize, ContentFilter, SlideDeckType } from '../enums/common.enums';\nimport { Picker } from '../picker/picker.component';\nimport { Content } from '../services/content.service';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { NgForm } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { SlideDeckSyncService } from '../services/slide-deck-sync.service';\nimport { AuditsViewerDialog } from '../audits-viewer/audits-viewer.component';\nimport { AppService } from '../services/app.service';\n\n@Component({\n templateUrl: './slide-deck.component.html',\n styleUrls: ['./slide-deck.component.scss'],\n animations: [\n trigger('fadeInOnSwap', [\n state('invisible', style({\n opacity: 0,\n })),\n state('visible', style({\n opacity: 1\n })),\n transition('invisible => visible', animate('500ms ease-in'))\n ]),\n trigger('fadeOutOnRemove', [\n state('visible', style({\n opacity: 1\n })),\n state('invisible', style({\n opacity: 0\n })),\n transition('visible => invisible', animate('500ms ease-out'))\n ])\n ]\n})\nexport class SlideDeckComponent implements OnInit, AfterViewInit {\n slideDeck: SlideDeck;\n imageSize = ImageSize;\n drawerOpened = false;\n alreadyAttachedIds: number[] = [];\n activeSlide: Slide;\n //showSaveProgress: boolean = false;\n contentFilter = ContentFilter;\n drawerLabel = 'Content';\n isContentRotator: boolean;\n\n @ViewChild(Picker, { static: false }) contentPicker !: Picker;\n @ViewChild(NgForm, { static: true }) editSlideDeckForm !: NgForm;\n @ViewChild(MatButton, { static: false }) saveSlideDeckButton !: MatButton;\n\n slideConfig = { 'slidesToShow': 1, 'slidesToScroll': 1 };\n\n constructor(private slideDeckService: SlideDeckService, private route: ActivatedRoute, private appService: AppService, public auditsViewer: MatDialog,\n private cdRef: ChangeDetectorRef, private slideDeckSyncService: SlideDeckSyncService, public snackBar: MatSnackBar) {\n }\n\n ngOnInit(): void {\n this.route.data.subscribe(data => {\n if (this.editSlideDeckForm.valid) {\n this.editSlideDeckForm.form.markAsPristine();\n }\n\n this.slideDeck = data.slideDeck;\n\n this.isContentRotator = this.slideDeck.slideDeckType === SlideDeckType.contentRotator;\n\n this.slideDeck.slides.forEach(slide => {\n slide.state = 'visible';\n });\n\n this.alreadyAttachedIds = this.slideDeck.slides.map(attachedContent => attachedContent.content.id);\n\n this.initializeDrawer();\n });\n }\n\n ngAfterViewInit() {\n this.slideDeckSyncService.clearActiveSlideDeck();\n }\n\n onSubmit() {\n this.appService.setIsFrozen(true);\n\n this.saveSlideDeckButton.disabled = true;\n\n this.slideDeckService.updateSlideDeck(this.slideDeck).subscribe(event => {\n if (event.ok) {\n this.appService.setIsFrozen(false);\n\n this.openSnackBar('Slide deck updated', 'OK');\n\n this.slideDeckSyncService.syncActiveSlideDeck(event.body as SlideDeck);\n\n if (this.editSlideDeckForm.valid) {\n this.editSlideDeckForm.form.markAsPristine();\n }\n }\n else {\n this.saveSlideDeckButton.disabled = false;\n\n this.appService.setIsFrozen(false);\n\n this.openSnackBar('Something went wrong', 'OK');\n }\n });\n }\n\n openSnackBar(message: string, action: string) {\n this.snackBar.open(message, action, {\n duration: 6000,\n });\n }\n\n handleSelectedContent(content: Content): void {\n setTimeout(() => {\n if (this.activeSlide) { // Swap content for current slide\n this.swapContent(content);\n }\n else { // Create new slide\n this.createSlide(content);\n }\n }, 100);\n }\n\n\n viewAudits() {\n this.slideDeckService.getAudits(this.slideDeck.id).subscribe(audits => {\n this.auditsViewer.open(AuditsViewerDialog, {\n width: '1200px',\n height: '80vh',\n data: {\n audits: audits\n }\n });\n });\n }\n\n createSlide(content: Content): void {\n const newSlide: Slide = {\n id: 0,\n isActive: true,\n captionPosition: 0,\n ordinal: this.slideDeck.slides.length,\n contentId: content.id,\n displayImageId: content.displayImageId ? content.displayImageId : 0,\n slideDeckId: this.slideDeck.id,\n content: content,\n title: content.title,\n description: content.description\n };\n\n this.slideDeck.slides.push(newSlide);\n\n this.alreadyAttachedIds.push(content.id);\n\n this.dirtyForm();\n }\n\n removeSlide(slideToRemove: Slide): void {\n slideToRemove.state = 'invisible';\n\n setTimeout(() => {\n const indexToRemove = this.slideDeck.slides.findIndex(slide => slide.id === slideToRemove.id);\n\n this.slideDeck.slides.splice(indexToRemove, 1);\n\n this.reorderSlides();\n\n this.dirtyForm();\n }, 500);\n\n const indexToRemove = this.alreadyAttachedIds.indexOf(slideToRemove.id);\n\n this.alreadyAttachedIds.splice(indexToRemove, 1);\n }\n\n reorderSlides() {\n this.slideDeck.slides.forEach((slide, index) => {\n slide.ordinal = index;\n });\n\n this.sortSlides();\n\n this.dirtyForm();\n }\n\n sortSlides() {\n this.slideDeck.slides.sort(function (a, b) { return a.ordinal - b.ordinal; });\n }\n\n swapContent(content: Content): void {\n content.state = 'invisible';\n\n if (this.contentPicker.contentFilter !== ContentFilter.images) {\n this.activeSlide.content = content;\n\n this.activeSlide.contentId = content.id;\n\n this.activeSlide.title = content.title;\n\n this.activeSlide.description = content.description;\n }\n\n this.activeSlide.displayImageId = 0;\n\n this.activeSlide.dataUrl = null;\n\n if (content.displayImageId) {\n this.activeSlide.displayImageId = content.displayImageId;\n }\n\n if (content.dataUrl) {\n this.activeSlide.dataUrl = content.dataUrl;\n\n content.dataUrl = null;\n }\n\n this.cdRef.detectChanges();\n\n this.activeSlide.content.state = 'visible';\n\n this.drawerOpened = false;\n\n this.dirtyForm();\n }\n\n initializeDrawer(): void {\n if (this.contentPicker) {\n if (this.slideDeck.slideDeckType === SlideDeckType.biographyFeature) {\n this.drawerLabel = 'Biographies';\n\n this.contentPicker.contentFilter = ContentFilter.biographies;\n\n this.contentPicker.filterable = false;\n }\n else {\n this.contentPicker.contentFilter = ContentFilter.all;\n\n this.contentPicker.filterable = true;\n }\n }\n }\n\n openDrawer(slide: Slide, contentFilter: ContentFilter = ContentFilter.all): void {\n if (slide) {\n this.activeSlide = slide;\n }\n\n this.contentPicker.contentFilter = contentFilter;\n\n if (this.contentPicker.contentFilter === ContentFilter.all) {\n this.contentPicker.filterable = true;\n\n this.contentPicker.showUploader = false;\n\n this.drawerLabel = 'Content';\n }\n else if (this.contentPicker.contentFilter === ContentFilter.images) {\n this.contentPicker.filterable = false;\n\n this.contentPicker.showUploader = true;\n\n this.drawerLabel = 'Images';\n }\n\n this.contentPicker.getResultPage();\n\n this.drawerOpened = true;\n }\n\n clearSearchResults(): void {\n this.contentPicker.searchBarVisibility = 'hidden';\n\n this.contentPicker.resultSet = 1;\n\n this.contentPicker.contentFilter = ContentFilter.all;\n\n this.contentPicker.queryInput = '';\n\n this.contentPicker.menuLinks = [];\n }\n\n dropSlide(event: CdkDragDrop) {\n moveItemInArray(this.slideDeck.slides, event.previousIndex, event.currentIndex);\n\n let counter = 0;\n\n this.slideDeck.slides.forEach(slide => {\n slide.ordinal = counter;\n\n counter++;\n });\n\n this.dirtyForm();\n }\n\n // overwriteTitleDesc(slide: Slide) {\n // slide.title = slide.content.title;\n\n // slide.description = slide.content.description;\n\n // this.dirtyForm();\n // }\n\n dirtyForm() {\n if (!this.editSlideDeckForm.form.dirty) {\n this.editSlideDeckForm.form.markAsDirty();\n }\n }\n}","// @ts-nocheck\nimport { OnInit, Component, ViewChild, ChangeDetectorRef, AfterViewInit, ElementRef } from '@angular/core';\nimport { SpotlightService, Spotlight, SpotlightTag } from '../services/spotlight.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { ImageSize, ContentFilter } from '../enums/common.enums';\nimport { Picker } from '../picker/picker.component';\nimport { Content } from '../services/content.service';\nimport { UntypedFormControl, NgForm } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { SpotlightSyncService } from '../services/spotlight-sync.service';\nimport { AuditsViewerDialog } from '../audits-viewer/audits-viewer.component';\nimport { AppService } from '../services/app.service';\nimport { Tag, TagService } from '../services/tag.service';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\n@Component({\n templateUrl: './spotlight.component.html',\n styleUrls: ['./spotlight.component.scss'],\n})\nexport class SpotlightComponent implements OnInit, AfterViewInit {\n spotlight: Spotlight;\n imageSize = ImageSize;\n drawerOpened = false;\n alreadyAttachedIds: number[] = [];\n contentFilter = ContentFilter;\n drawerLabel = 'Content';\n isContentRotator: boolean;\n tagControl: UntypedFormControl = new UntypedFormControl();\n filteredTags: Observable;\n tagOptions: Tag[];\n tagsVisible = true;\n tagsSelectable = false;\n tagsRemovable = true;\n tagsAddOnBlur = true;\n\n @ViewChild(Picker, { static: false }) contentPicker !: Picker;\n @ViewChild(NgForm, { static: true }) editspotlightForm !: NgForm;\n @ViewChild(MatButton, { static: false }) savespotlightButton !: MatButton;\n\n @ViewChild('tagInput') tagInput: ElementRef;\n\n constructor(private spotlightService: SpotlightService, private route: ActivatedRoute, private appService: AppService, private tagService: TagService, public auditsViewer: MatDialog,\n private cdRef: ChangeDetectorRef, private spotlightSyncService: SpotlightSyncService, public snackBar: MatSnackBar) {\n }\n\n ngOnInit(): void {\n this.route.data.subscribe(data => {\n if (this.editspotlightForm.valid) {\n this.editspotlightForm.form.markAsPristine();\n }\n\n this.spotlight = data.spotlight;\n\n this.tagService.getTags().subscribe(event => {\n this.tagOptions = event;\n });\n\n\n this.filteredTags = this.tagControl.valueChanges\n .pipe(\n startWith(''),\n map(val => this.filterTag(val))\n );\n\n this.initializeDrawer();\n });\n }\n\n ngAfterViewInit() {\n this.spotlightSyncService.clearActiveSpotlight();\n }\n\n selectExistingTag(event: MatAutocompleteSelectedEvent): void {\n const existingTag = event.option.value as Tag;\n\n this.addExistingTag(existingTag);\n }\n\n addExistingTag(existingTag: Tag): void {\n let alreadyAttached = false;\n\n // Determine whether the tag is already attached\n if (this.spotlight.spotlightTags) {\n this.spotlight.spotlightTags.forEach(contentTag => {\n if (contentTag.tag.id === existingTag.id) {\n alreadyAttached = true;\n }\n });\n }\n\n if (!alreadyAttached) {\n // If no content tags, create empty list\n if (!this.spotlight.spotlightTags) {\n const contentTags: SpotlightTag[] = [];\n\n this.spotlight.spotlightTags = contentTags;\n }\n\n const newSpotlightTag: SpotlightTag = {\n tagId: existingTag.id,\n spotlightId: this.spotlight.id,\n tag: existingTag\n };\n\n this.spotlight.spotlightTags.push(newSpotlightTag);\n\n this.dirtyForm();\n }\n this.tagInput.nativeElement.value = '';\n this.tagControl.reset();\n\n this.filteredTags = this.tagControl.valueChanges\n .pipe(\n startWith(''),\n map(val => this.filterTag(val))\n );\n }\n\n filterTag(val: any): Tag[] {\n if (!val || val.id) return null;\n\n return this.tagOptions.filter(tag =>\n tag.name.toLowerCase().includes(val.toLowerCase()));\n }\n\n removeTag(tag: any): void {\n const index = this.spotlight.spotlightTags.indexOf(tag);\n\n if (index >= 0) {\n this.spotlight.spotlightTags.splice(index, 1);\n }\n\n this.dirtyForm();\n }\n\n removeImage() {\n this.spotlight.displayImageId = undefined;\n\n this.dirtyForm();\n }\n\n onSubmit() {\n this.appService.setIsFrozen(true);\n\n this.savespotlightButton.disabled = true;\n\n this.spotlightService.updateSpotlight(this.spotlight).subscribe(event => {\n if (event.ok) {\n this.appService.setIsFrozen(false);\n\n this.openSnackBar('Spotlight updated', 'OK');\n\n this.spotlightSyncService.syncActiveSpotlight(event.body as Spotlight);\n\n if (this.editspotlightForm.valid) {\n this.editspotlightForm.form.markAsPristine();\n }\n }\n else {\n this.savespotlightButton.disabled = false;\n\n this.appService.setIsFrozen(false);\n\n this.openSnackBar('Something went wrong', 'OK');\n }\n });\n }\n\n openSnackBar(message: string, action: string) {\n this.snackBar.open(message, action, {\n duration: 6000,\n });\n }\n\n handleSelectedContent(content: Content): void {\n setTimeout(() => {\n this.swapImage(content);\n }, 100);\n }\n\n viewAudits() {\n this.spotlightService.getAudits(this.spotlight.id).subscribe(audits => {\n const dialogRef = this.auditsViewer.open(AuditsViewerDialog, {\n width: '1200px',\n height: '80vh',\n data: {\n audits: audits\n }\n });\n\n dialogRef.afterClosed().subscribe(result => {\n // No operation\n });\n });\n }\n\n // createSlide(content: Content): void {\n // var newSlide: Slide = {\n // id: 0,\n // isActive: true,\n // captionPosition: 0,\n // ordinal: this.spotlight.slides.length,\n // contentId: content.id,\n // displayImageId: content.displayImageId ? content.displayImageId : 0,\n // spotlightId: this.spotlight.id,\n // content: content,\n // title: content.title,\n // description: content.description\n // }\n\n // this.spotlight.slides.push(newSlide);\n\n // this.alreadyAttachedIds.push(content.id);\n\n // this.dirtyForm();\n //}\n\n // removeSlide(slideToRemove: Slide): void {\n // slideToRemove.state = \"invisible\";\n\n // setTimeout(() => {\n // var indexToRemove = this.spotlight.slides.findIndex(slide => slide.id === slideToRemove.id);\n\n // this.spotlight.slides.splice(indexToRemove, 1);\n\n // this.reorderSlides();\n\n // this.dirtyForm();\n // }, 500);\n\n // var indexToRemove = this.alreadyAttachedIds.indexOf(slideToRemove.id);\n\n // this.alreadyAttachedIds.splice(indexToRemove, 1);\n // }\n\n // reorderSlides() {\n // this.spotlight.slides.forEach((slide, index) => {\n // slide.ordinal = index;\n // });\n\n // this.sortSlides();\n\n // this.dirtyForm();\n // }\n\n // sortSlides() {\n // this.spotlight.slides.sort(function (a, b) { return a.ordinal - b.ordinal });\n // }\n\n swapImage(content: Content): void {\n content.state = 'invisible';\n\n this.spotlight.displayImageId = 0;\n\n this.spotlight.dataUrl = null;\n\n if (content.displayImageId) {\n this.spotlight.displayImageId = content.displayImageId;\n }\n\n if (content.dataUrl) {\n this.spotlight.dataUrl = content.dataUrl;\n\n content.dataUrl = null;\n }\n\n this.cdRef.detectChanges();\n\n this.spotlight.state = 'visible';\n\n this.drawerOpened = false;\n\n this.dirtyForm();\n }\n\n initializeDrawer(): void {\n if (this.contentPicker) {\n this.contentPicker.contentFilter = ContentFilter.all;\n\n this.contentPicker.filterable = true;\n }\n }\n\n openDrawer(contentFilter: ContentFilter = ContentFilter.all): void {\n this.contentPicker.contentFilter = contentFilter;\n\n if (this.contentPicker.contentFilter === ContentFilter.all) {\n this.contentPicker.filterable = true;\n\n this.contentPicker.showUploader = false;\n\n this.drawerLabel = 'Content';\n }\n else if (this.contentPicker.contentFilter === ContentFilter.images) {\n this.contentPicker.filterable = false;\n\n this.contentPicker.showUploader = true;\n\n this.drawerLabel = 'Images';\n }\n\n this.contentPicker.getResultPage();\n\n this.drawerOpened = true;\n }\n\n clearSearchResults(): void {\n this.contentPicker.searchBarVisibility = 'hidden';\n\n this.contentPicker.resultSet = 1;\n\n this.contentPicker.contentFilter = ContentFilter.all;\n\n this.contentPicker.queryInput = '';\n\n this.contentPicker.menuLinks = [];\n }\n\n // overwriteTitleDesc(slide: Slide) {\n // slide.title = slide.content.title;\n\n // slide.description = slide.content.description;\n\n // this.dirtyForm();\n // }\n\n dirtyForm() {\n if (!this.editspotlightForm.form.dirty) {\n this.editspotlightForm.form.markAsDirty();\n }\n }\n}","// @ts-nocheck\nimport { Resolve, ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { Spotlight, SpotlightService } from '../services/spotlight.service';\nimport { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { tap } from 'rxjs/operators';\n\n@Injectable()\nexport class SpotlightEditResolver implements Resolve {\n constructor(private service: SpotlightService, private router: Router) { }\n\n resolve(route: ActivatedRouteSnapshot): Spotlight | Observable | Promise {\n return this.service.getSpotlight(route.params.spotlightid)\n .pipe(\n tap(spotlight => {\n if (!spotlight) {\n this.router.navigate(['/404']);\n }\n })\n );\n }\n}","// @ts-nocheck\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Inject, Component, AfterViewInit, OnInit, ViewChild, ElementRef } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { Tag, TagService } from '../services/tag.service';\n\n@Component({\n selector: 'tag-dialog',\n templateUrl: './tag-dialog.component.html',\n styleUrls: ['./tag-dialog.component.scss']\n})\nexport class TagDialog implements OnInit, AfterViewInit {\n attachedIds: number[] = [];\n selectedTags: Tag[] = [];\n tagOptions: Tag[] = [];\n filteredTags: Observable;\n tagControl: UntypedFormControl = new UntypedFormControl();\n\n @ViewChild('tagInput') tagInput: ElementRef;\n\n constructor(\n public dialogRef: MatDialogRef,\n private tagService: TagService,\n @Inject(MAT_DIALOG_DATA) public data: string[]) { }\n\n ngOnInit() {\n this.filteredTags = this.tagControl.valueChanges\n .pipe(\n startWith(''),\n map(val => this.filterTag(val))\n );\n }\n\n ngAfterViewInit() {\n this.tagService.getTags().subscribe(event => {\n this.tagOptions = event;\n });\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n addAttachedIds(tag: Tag) {\n if (!this.attachedIds.includes(tag.id)) {\n this.attachedIds.push(tag.id);\n }\n else {\n const indexToRemove = this.attachedIds.indexOf(tag.id);\n\n this.attachedIds.splice(indexToRemove, 1);\n }\n }\n\n filterTag(val: any): Tag[] {\n if (!val || val.id) return null;\n\n return this.tagOptions.filter(tag =>\n tag.name.toLowerCase().includes(val.toLowerCase()));\n }\n\n selectExistingTag(event: MatAutocompleteSelectedEvent): void {\n const existingTag = event.option.value as Tag;\n\n this.addExistingTag(existingTag);\n }\n\n addExistingTag(existingTag: Tag): void {\n let alreadySelected = false;\n\n // Determine whether the tag is already attached\n if (this.selectedTags) {\n this.selectedTags.forEach(tag => {\n if (tag.id === existingTag.id) {\n alreadySelected = true;\n }\n });\n }\n\n if (!alreadySelected) {\n this.selectedTags.push(existingTag);\n\n this.addAttachedIds(existingTag);\n }\n\n this.tagInput.nativeElement.value = '';\n\n this.tagControl.reset();\n\n this.filteredTags = this.tagControl.valueChanges\n .pipe(\n startWith(''),\n map(val => this.filterTag(val))\n );\n }\n}","import { Component, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\n\n@Component({\n selector: 'uploader',\n templateUrl: './uploader.component.html',\n styleUrls: ['./uploader.component.scss'],\n})\nexport class Uploader implements OnDestroy {\n @Input() accept: string;\n @Input() multiple = false;\n @Input() buttonLabel: string;\n @Input() iconLabel: string;\n\n @Output() upload = new EventEmitter();\n\n private files: Array = [];\n\n ngOnDestroy() {\n this.upload.unsubscribe();\n }\n\n initiateUpload() {\n const uploader = document.getElementById('uploader') as HTMLInputElement;\n\n uploader.onchange = () => {\n for (let index = 0; index < uploader.files.length; index++) {\n const file = uploader.files[index];\n\n this.files.push(file);\n }\n\n this.uploadFiles();\n };\n\n uploader.click();\n }\n\n private async uploadFile(file: File) {\n this.upload.emit(file);\n }\n\n private uploadFiles() {\n const uploader = document.getElementById('uploader') as HTMLInputElement;\n\n uploader.value = '';\n\n this.files.forEach(fileToUpload => {\n this.uploadFile(fileToUpload);\n });\n\n this.files = [];\n }\n}","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'cms-warning',\n templateUrl: './warning.component.html',\n styleUrls: ['./warning.component.scss']\n})\nexport class WarningComponent implements OnInit {\n\n ngOnInit(): void {\n // Empty\n }\n\n}\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nimport 'hammerjs';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n","var map = {\n\t\"./af\": 8227,\n\t\"./af.js\": 8227,\n\t\"./ar\": 5973,\n\t\"./ar-dz\": 71943,\n\t\"./ar-dz.js\": 71943,\n\t\"./ar-kw\": 34789,\n\t\"./ar-kw.js\": 34789,\n\t\"./ar-ly\": 11265,\n\t\"./ar-ly.js\": 11265,\n\t\"./ar-ma\": 64325,\n\t\"./ar-ma.js\": 64325,\n\t\"./ar-ps\": 6137,\n\t\"./ar-ps.js\": 6137,\n\t\"./ar-sa\": 83766,\n\t\"./ar-sa.js\": 83766,\n\t\"./ar-tn\": 38429,\n\t\"./ar-tn.js\": 38429,\n\t\"./ar.js\": 5973,\n\t\"./az\": 68438,\n\t\"./az.js\": 68438,\n\t\"./be\": 68178,\n\t\"./be.js\": 68178,\n\t\"./bg\": 25076,\n\t\"./bg.js\": 25076,\n\t\"./bm\": 42757,\n\t\"./bm.js\": 42757,\n\t\"./bn\": 52416,\n\t\"./bn-bd\": 46295,\n\t\"./bn-bd.js\": 46295,\n\t\"./bn.js\": 52416,\n\t\"./bo\": 81850,\n\t\"./bo.js\": 81850,\n\t\"./br\": 35773,\n\t\"./br.js\": 35773,\n\t\"./bs\": 10733,\n\t\"./bs.js\": 10733,\n\t\"./ca\": 95631,\n\t\"./ca.js\": 95631,\n\t\"./cs\": 84299,\n\t\"./cs.js\": 84299,\n\t\"./cv\": 25217,\n\t\"./cv.js\": 25217,\n\t\"./cy\": 23833,\n\t\"./cy.js\": 23833,\n\t\"./da\": 7450,\n\t\"./da.js\": 7450,\n\t\"./de\": 9127,\n\t\"./de-at\": 67098,\n\t\"./de-at.js\": 67098,\n\t\"./de-ch\": 46875,\n\t\"./de-ch.js\": 46875,\n\t\"./de.js\": 9127,\n\t\"./dv\": 57869,\n\t\"./dv.js\": 57869,\n\t\"./el\": 176,\n\t\"./el.js\": 176,\n\t\"./en-au\": 79321,\n\t\"./en-au.js\": 79321,\n\t\"./en-ca\": 42869,\n\t\"./en-ca.js\": 42869,\n\t\"./en-gb\": 13709,\n\t\"./en-gb.js\": 13709,\n\t\"./en-ie\": 87794,\n\t\"./en-ie.js\": 87794,\n\t\"./en-il\": 87689,\n\t\"./en-il.js\": 87689,\n\t\"./en-in\": 40594,\n\t\"./en-in.js\": 40594,\n\t\"./en-nz\": 44165,\n\t\"./en-nz.js\": 44165,\n\t\"./en-sg\": 2451,\n\t\"./en-sg.js\": 2451,\n\t\"./eo\": 53191,\n\t\"./eo.js\": 53191,\n\t\"./es\": 57644,\n\t\"./es-do\": 79954,\n\t\"./es-do.js\": 79954,\n\t\"./es-mx\": 14827,\n\t\"./es-mx.js\": 14827,\n\t\"./es-us\": 44874,\n\t\"./es-us.js\": 44874,\n\t\"./es.js\": 57644,\n\t\"./et\": 90558,\n\t\"./et.js\": 90558,\n\t\"./eu\": 22574,\n\t\"./eu.js\": 22574,\n\t\"./fa\": 33143,\n\t\"./fa.js\": 33143,\n\t\"./fi\": 21200,\n\t\"./fi.js\": 21200,\n\t\"./fil\": 81394,\n\t\"./fil.js\": 81394,\n\t\"./fo\": 34713,\n\t\"./fo.js\": 34713,\n\t\"./fr\": 34525,\n\t\"./fr-ca\": 79165,\n\t\"./fr-ca.js\": 79165,\n\t\"./fr-ch\": 55926,\n\t\"./fr-ch.js\": 55926,\n\t\"./fr.js\": 34525,\n\t\"./fy\": 68470,\n\t\"./fy.js\": 68470,\n\t\"./ga\": 9145,\n\t\"./ga.js\": 9145,\n\t\"./gd\": 71453,\n\t\"./gd.js\": 71453,\n\t\"./gl\": 61835,\n\t\"./gl.js\": 61835,\n\t\"./gom-deva\": 11490,\n\t\"./gom-deva.js\": 11490,\n\t\"./gom-latn\": 57260,\n\t\"./gom-latn.js\": 57260,\n\t\"./gu\": 53270,\n\t\"./gu.js\": 53270,\n\t\"./he\": 64123,\n\t\"./he.js\": 64123,\n\t\"./hi\": 23683,\n\t\"./hi.js\": 23683,\n\t\"./hr\": 557,\n\t\"./hr.js\": 557,\n\t\"./hu\": 51637,\n\t\"./hu.js\": 51637,\n\t\"./hy-am\": 91431,\n\t\"./hy-am.js\": 91431,\n\t\"./id\": 14993,\n\t\"./id.js\": 14993,\n\t\"./is\": 9698,\n\t\"./is.js\": 9698,\n\t\"./it\": 26829,\n\t\"./it-ch\": 61227,\n\t\"./it-ch.js\": 61227,\n\t\"./it.js\": 26829,\n\t\"./ja\": 24724,\n\t\"./ja.js\": 24724,\n\t\"./jv\": 74404,\n\t\"./jv.js\": 74404,\n\t\"./ka\": 54984,\n\t\"./ka.js\": 54984,\n\t\"./kk\": 86213,\n\t\"./kk.js\": 86213,\n\t\"./km\": 65541,\n\t\"./km.js\": 65541,\n\t\"./kn\": 19741,\n\t\"./kn.js\": 19741,\n\t\"./ko\": 40150,\n\t\"./ko.js\": 40150,\n\t\"./ku\": 66283,\n\t\"./ku-kmr\": 50039,\n\t\"./ku-kmr.js\": 50039,\n\t\"./ku.js\": 66283,\n\t\"./ky\": 70863,\n\t\"./ky.js\": 70863,\n\t\"./lb\": 92592,\n\t\"./lb.js\": 92592,\n\t\"./lo\": 78219,\n\t\"./lo.js\": 78219,\n\t\"./lt\": 81535,\n\t\"./lt.js\": 81535,\n\t\"./lv\": 46982,\n\t\"./lv.js\": 46982,\n\t\"./me\": 16527,\n\t\"./me.js\": 16527,\n\t\"./mi\": 16564,\n\t\"./mi.js\": 16564,\n\t\"./mk\": 2514,\n\t\"./mk.js\": 2514,\n\t\"./ml\": 33174,\n\t\"./ml.js\": 33174,\n\t\"./mn\": 29765,\n\t\"./mn.js\": 29765,\n\t\"./mr\": 5181,\n\t\"./mr.js\": 5181,\n\t\"./ms\": 55093,\n\t\"./ms-my\": 3231,\n\t\"./ms-my.js\": 3231,\n\t\"./ms.js\": 55093,\n\t\"./mt\": 54711,\n\t\"./mt.js\": 54711,\n\t\"./my\": 86920,\n\t\"./my.js\": 86920,\n\t\"./nb\": 42555,\n\t\"./nb.js\": 42555,\n\t\"./ne\": 58874,\n\t\"./ne.js\": 58874,\n\t\"./nl\": 2915,\n\t\"./nl-be\": 89418,\n\t\"./nl-be.js\": 89418,\n\t\"./nl.js\": 2915,\n\t\"./nn\": 81528,\n\t\"./nn.js\": 81528,\n\t\"./oc-lnc\": 75496,\n\t\"./oc-lnc.js\": 75496,\n\t\"./pa-in\": 40209,\n\t\"./pa-in.js\": 40209,\n\t\"./pl\": 60025,\n\t\"./pl.js\": 60025,\n\t\"./pt\": 55507,\n\t\"./pt-br\": 64705,\n\t\"./pt-br.js\": 64705,\n\t\"./pt.js\": 55507,\n\t\"./ro\": 22734,\n\t\"./ro.js\": 22734,\n\t\"./ru\": 29380,\n\t\"./ru.js\": 29380,\n\t\"./sd\": 67830,\n\t\"./sd.js\": 67830,\n\t\"./se\": 91268,\n\t\"./se.js\": 91268,\n\t\"./si\": 21295,\n\t\"./si.js\": 21295,\n\t\"./sk\": 95323,\n\t\"./sk.js\": 95323,\n\t\"./sl\": 80239,\n\t\"./sl.js\": 80239,\n\t\"./sq\": 23647,\n\t\"./sq.js\": 23647,\n\t\"./sr\": 81674,\n\t\"./sr-cyrl\": 99232,\n\t\"./sr-cyrl.js\": 99232,\n\t\"./sr.js\": 81674,\n\t\"./ss\": 38097,\n\t\"./ss.js\": 38097,\n\t\"./sv\": 5917,\n\t\"./sv.js\": 5917,\n\t\"./sw\": 34033,\n\t\"./sw.js\": 34033,\n\t\"./ta\": 21005,\n\t\"./ta.js\": 21005,\n\t\"./te\": 64632,\n\t\"./te.js\": 64632,\n\t\"./tet\": 62804,\n\t\"./tet.js\": 62804,\n\t\"./tg\": 82466,\n\t\"./tg.js\": 82466,\n\t\"./th\": 94492,\n\t\"./th.js\": 94492,\n\t\"./tk\": 99156,\n\t\"./tk.js\": 99156,\n\t\"./tl-ph\": 60635,\n\t\"./tl-ph.js\": 60635,\n\t\"./tlh\": 71280,\n\t\"./tlh.js\": 71280,\n\t\"./tr\": 74088,\n\t\"./tr.js\": 74088,\n\t\"./tzl\": 51183,\n\t\"./tzl.js\": 51183,\n\t\"./tzm\": 52475,\n\t\"./tzm-latn\": 82848,\n\t\"./tzm-latn.js\": 82848,\n\t\"./tzm.js\": 52475,\n\t\"./ug-cn\": 93302,\n\t\"./ug-cn.js\": 93302,\n\t\"./uk\": 53647,\n\t\"./uk.js\": 53647,\n\t\"./ur\": 23574,\n\t\"./ur.js\": 23574,\n\t\"./uz\": 4867,\n\t\"./uz-latn\": 46030,\n\t\"./uz-latn.js\": 46030,\n\t\"./uz.js\": 4867,\n\t\"./vi\": 97345,\n\t\"./vi.js\": 97345,\n\t\"./x-pseudo\": 65068,\n\t\"./x-pseudo.js\": 65068,\n\t\"./yo\": 75633,\n\t\"./yo.js\": 75633,\n\t\"./zh-cn\": 63822,\n\t\"./zh-cn.js\": 63822,\n\t\"./zh-hk\": 8247,\n\t\"./zh-hk.js\": 8247,\n\t\"./zh-mo\": 27243,\n\t\"./zh-mo.js\": 27243,\n\t\"./zh-tw\": 83647,\n\t\"./zh-tw.js\": 83647\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 19183;","/* (ignored) */"],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[56,57]}