{ "version": 3, "sources": ["src/app/sidenav/_components/side-nav-item/side-nav-item.component.ts", "src/app/sidenav/_components/side-nav-item/side-nav-item.component.html", "src/app/_pipes/setting-fragment.pipe.ts", "src/app/sidenav/preference-nav/preference-nav.component.ts", "src/app/sidenav/preference-nav/preference-nav.component.html"], "sourcesContent": ["import {ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, Input, OnInit} from '@angular/core';\r\nimport {NavigationEnd, Router, RouterLink} from '@angular/router';\r\nimport {filter, map, tap} from 'rxjs';\r\nimport {NavService} from 'src/app/_services/nav.service';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {AsyncPipe, NgClass, NgOptimizedImage, NgTemplateOutlet} from \"@angular/common\";\r\nimport {ImageComponent} from \"../../../shared/image/image.component\";\r\nimport {Breakpoint, UtilityService} from \"../../../shared/_services/utility.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-side-nav-item',\r\n standalone: true,\r\n imports: [RouterLink, NgOptimizedImage, ImageComponent, NgTemplateOutlet, NgClass, AsyncPipe],\r\n templateUrl: './side-nav-item.component.html',\r\n styleUrls: ['./side-nav-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SideNavItemComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly router = inject(Router);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n protected readonly navService = inject(NavService);\r\n protected readonly utilityService = inject(UtilityService);\r\n\r\n /**\r\n * Id for automatic scrolling to.\r\n */\r\n @Input() id: string | null = null;\r\n\r\n /**\r\n * Icon to display next to item. ie) 'fa-home'\r\n */\r\n @Input() icon: string = '';\r\n @Input() imageUrl: string | null = '';\r\n /**\r\n * Removes all the space around the icon area\r\n */\r\n @Input() noIcon: boolean = false;\r\n /**\r\n * Text for the item\r\n */\r\n @Input() title: string = '';\r\n\r\n /**\r\n * If a link should be generated when clicked. By default (undefined), no link will be generated\r\n */\r\n @Input() link: string | undefined;\r\n /**\r\n * If external, link will be used as full href and rel will be applied\r\n */\r\n @Input() external: boolean = false;\r\n /**\r\n * If using a link, then you can pass optional queryParameters\r\n */\r\n @Input() queryParams: any | undefined = undefined;\r\n /**\r\n * If using a lin, then you can pass optional fragment to append to the end\r\n */\r\n @Input() fragment: string | undefined = undefined;\r\n /**\r\n * Optional count to pass in that will show as a red badge on the side, indicating some action needs to be taken\r\n */\r\n @Input() badgeCount: number | null = -1;\r\n\r\n\r\n @Input() comparisonMethod: 'startsWith' | 'equals' = 'equals';\r\n\r\n\r\n\r\n highlighted = false;\r\n\r\n constructor() {\r\n this.router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntilDestroyed(this.destroyRef),\r\n map(evt => evt as NavigationEnd),\r\n tap((evt: NavigationEnd) => this.triggerHighlightCheck(evt.url)),\r\n tap(_ => this.collapseNavIfApplicable())\r\n ).subscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.triggerHighlightCheck(this.router.url);\r\n }, 100);\r\n }\r\n\r\n triggerHighlightCheck(routeUrl: string) {\r\n const [url, queryParams] = routeUrl.split('?');\r\n const [page, fragment = ''] = url.split('#');\r\n\r\n this.updateHighlight(page, queryParams, url.includes('#') ? fragment : undefined);\r\n }\r\n\r\n\r\n updateHighlight(page: string, queryParams?: string, fragment?: string) {\r\n if (this.link === undefined) {\r\n this.highlighted = false;\r\n this.cdRef.markForCheck();\r\n return;\r\n }\r\n\r\n if (!page.endsWith('/') && !queryParams && this.fragment === undefined && queryParams === undefined) {\r\n page = page + '/';\r\n }\r\n\r\n let fragmentEqual = false;\r\n if (fragment === this.fragment) {\r\n fragmentEqual = true;\r\n }\r\n if (this.fragment === '' && fragment === undefined) { // This is the case where we load a fragment of nothing and browser removes the #\r\n fragmentEqual = true;\r\n }\r\n\r\n const queryParamsEqual = this.queryParams === queryParams;\r\n\r\n if (this.comparisonMethod === 'equals' && page === this.link && fragmentEqual && queryParamsEqual) {\r\n this.highlighted = true;\r\n this.cdRef.markForCheck();\r\n return;\r\n }\r\n\r\n if (this.comparisonMethod === 'startsWith' && page.startsWith(this.link)) {\r\n if (queryParams && queryParams === this.queryParams && fragmentEqual) {\r\n this.highlighted = true;\r\n this.cdRef.markForCheck();\r\n return;\r\n }\r\n\r\n this.highlighted = true;\r\n this.cdRef.markForCheck();\r\n return;\r\n }\r\n\r\n this.highlighted = false;\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n openLink() {\r\n this.collapseNavIfApplicable();\r\n\r\n if (Object.keys(this.queryParams).length !== 0) {\r\n this.router.navigateByUrl(this.link + '?' + this.queryParams);\r\n return;\r\n } else if (this.fragment) {\r\n this.router.navigateByUrl(this.link + '#' + this.fragment);\r\n return;\r\n }\r\n\r\n this.router.navigateByUrl(this.link!);\r\n }\r\n\r\n // If on mobile, automatically collapse the side nav after making a selection\r\n collapseNavIfApplicable() {\r\n if (this.utilityService.getActiveBreakpoint() < Breakpoint.Tablet) {\r\n this.navService.collapseSideNav(true);\r\n }\r\n }\r\n\r\n}\r\n", "@if (link === undefined || link.length === 0) {\r\n
\r\n \r\n
\r\n} @else {\r\n @if (external) {\r\n \r\n \r\n \r\n } @else {\r\n @if (queryParams && queryParams !== {}) {\r\n \r\n \r\n \r\n } @else if (fragment) {\r\n \r\n \r\n \r\n } @else {\r\n \r\n \r\n \r\n }\r\n }\r\n}\r\n\r\n\r\n
\r\n @if (!noIcon) {\r\n \r\n
\r\n @if (imageUrl !== null && imageUrl !== '') {\r\n \r\n } @else {\r\n \r\n }\r\n
\r\n
\r\n }\r\n\r\n \r\n
\r\n {{title}}\r\n @if (badgeCount && badgeCount > 0) {\r\n {{badgeCount}}\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n", "import { Pipe, PipeTransform } from '@angular/core';\r\nimport {SettingsTabId} from \"../sidenav/preference-nav/preference-nav.component\";\r\nimport {translate} from \"@jsverse/transloco\";\r\n\r\n/**\r\n * Translates the fragment for Settings to a User title\r\n */\r\n@Pipe({\r\n name: 'settingFragment',\r\n standalone: true\r\n})\r\nexport class SettingFragmentPipe implements PipeTransform {\r\n\r\n transform(tabID: SettingsTabId | string): string {\r\n return translate('settings.' + tabID);\r\n }\r\n}\r\n", "import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject} from '@angular/core';\r\nimport {TranslocoDirective} from \"@jsverse/transloco\";\r\nimport {AsyncPipe, DOCUMENT, NgClass} from \"@angular/common\";\r\nimport {NavService} from \"../../_services/nav.service\";\r\nimport {AccountService, Role} from \"../../_services/account.service\";\r\nimport {SideNavItemComponent} from \"../_components/side-nav-item/side-nav-item.component\";\r\nimport {ActivatedRoute, NavigationEnd, Router, RouterLink} from \"@angular/router\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {SettingFragmentPipe} from \"../../_pipes/setting-fragment.pipe\";\r\nimport {map, Observable, of, shareReplay, switchMap, take, tap} from \"rxjs\";\r\nimport {ServerService} from \"../../_services/server.service\";\r\nimport {ScrobblingService} from \"../../_services/scrobbling.service\";\r\nimport {User} from \"../../_models/user\";\r\nimport {filter} from \"rxjs/operators\";\r\nimport {Breakpoint, UtilityService} from \"../../shared/_services/utility.service\";\r\n\r\nexport enum SettingsTabId {\r\n\r\n // Admin\r\n General = 'admin-general',\r\n Email = 'admin-email',\r\n Media = 'admin-media',\r\n Users = 'admin-users',\r\n Libraries = 'admin-libraries',\r\n System = 'admin-system',\r\n Tasks = 'admin-tasks',\r\n Statistics = 'admin-statistics',\r\n MediaIssues = 'admin-media-issues',\r\n\r\n // Kavita+\r\n KavitaPlus = 'admin-kavitaplus',\r\n MALStackImport = 'mal-stack-import',\r\n\r\n // Non-Admin\r\n Account = 'account',\r\n Preferences = 'preferences',\r\n Clients = 'clients',\r\n Theme = 'theme',\r\n Devices = 'devices',\r\n UserStats = 'user-stats',\r\n Scrobbling = 'scrobbling',\r\n Customize = 'customize',\r\n CBLImport = 'cbl-import'\r\n}\r\n\r\ninterface PrefSection {\r\n title: string;\r\n children: SideNavItem[];\r\n}\r\n\r\nclass SideNavItem {\r\n fragment: SettingsTabId;\r\n roles: Array = [];\r\n badgeCount$?: Observable | undefined;\r\n\r\n constructor(fragment: SettingsTabId, roles: Array = [], badgeCount$: Observable | undefined = undefined) {\r\n this.fragment = fragment;\r\n this.roles = roles;\r\n this.badgeCount$ = badgeCount$;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-preference-nav',\r\n standalone: true,\r\n imports: [\r\n TranslocoDirective,\r\n NgClass,\r\n AsyncPipe,\r\n SideNavItemComponent,\r\n RouterLink,\r\n SettingFragmentPipe\r\n ],\r\n templateUrl: './preference-nav.component.html',\r\n styleUrl: './preference-nav.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PreferenceNavComponent implements AfterViewInit {\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n protected readonly navService = inject(NavService);\r\n protected readonly accountService = inject(AccountService);\r\n protected readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly serverService = inject(ServerService);\r\n private readonly scrobbleService = inject(ScrobblingService);\r\n private readonly router = inject(Router);\r\n protected readonly utilityService = inject(UtilityService);\r\n private readonly document = inject(DOCUMENT);\r\n\r\n hasActiveLicense = false;\r\n /**\r\n * This links to settings.component.html which has triggers on what underlying component to render out.\r\n */\r\n sections: Array = [\r\n {\r\n title: 'account-section-title',\r\n children: [\r\n new SideNavItem(SettingsTabId.Account, []),\r\n new SideNavItem(SettingsTabId.Preferences),\r\n new SideNavItem(SettingsTabId.Customize),\r\n new SideNavItem(SettingsTabId.Clients),\r\n new SideNavItem(SettingsTabId.Theme),\r\n new SideNavItem(SettingsTabId.Devices),\r\n new SideNavItem(SettingsTabId.UserStats),\r\n ]\r\n },\r\n {\r\n title: 'server-section-title',\r\n children: [\r\n new SideNavItem(SettingsTabId.General, [Role.Admin]),\r\n new SideNavItem(SettingsTabId.Media, [Role.Admin]),\r\n new SideNavItem(SettingsTabId.Email, [Role.Admin]),\r\n new SideNavItem(SettingsTabId.Users, [Role.Admin]),\r\n new SideNavItem(SettingsTabId.Libraries, [Role.Admin]),\r\n new SideNavItem(SettingsTabId.Tasks, [Role.Admin]),\r\n ]\r\n },\r\n {\r\n title: 'import-section-title',\r\n children: [\r\n new SideNavItem(SettingsTabId.CBLImport, []),\r\n ]\r\n },\r\n {\r\n title: 'info-section-title',\r\n children: [\r\n new SideNavItem(SettingsTabId.System, [Role.Admin]),\r\n new SideNavItem(SettingsTabId.Statistics, [Role.Admin]),\r\n new SideNavItem(SettingsTabId.MediaIssues, [Role.Admin],\r\n this.accountService.currentUser$.pipe(\r\n take(1),\r\n switchMap(user => {\r\n if (!user || !this.accountService.hasAdminRole(user)) {\r\n // If no user or user does not have the admin role, return an observable of -1\r\n return of(-1);\r\n } else {\r\n return this.serverService.getMediaErrors().pipe(\r\n takeUntilDestroyed(this.destroyRef),\r\n map(d => d.length),\r\n shareReplay({ bufferSize: 1, refCount: true })\r\n );\r\n }\r\n })\r\n )),\r\n ]\r\n },\r\n {\r\n title: 'kavitaplus-section-title',\r\n children: [\r\n new SideNavItem(SettingsTabId.KavitaPlus, [Role.Admin]),\r\n ]\r\n }\r\n ];\r\n collapseSideNavOnMobileNav$ = this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntilDestroyed(this.destroyRef),\r\n map(evt => evt as NavigationEnd),\r\n switchMap(_ => this.utilityService.activeBreakpoint$),\r\n filter((b) => b < Breakpoint.Tablet),\r\n switchMap(() => this.navService.sideNavCollapsed$),\r\n take(1),\r\n filter(collapsed => !collapsed),\r\n tap(c => {\r\n this.navService.collapseSideNav(true);\r\n }),\r\n );\r\n\r\n\r\n constructor() {\r\n this.collapseSideNavOnMobileNav$.subscribe();\r\n\r\n // Ensure that on mobile, we are collapsed by default\r\n if (this.utilityService.getActiveBreakpoint() < Breakpoint.Tablet) {\r\n this.navService.collapseSideNav(true);\r\n }\r\n\r\n\r\n this.accountService.hasValidLicense$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(res => {\r\n if (res) {\r\n this.hasActiveLicense = true;\r\n if (this.hasActiveLicense) {\r\n if (this.sections[4].children.length === 1) {\r\n this.sections[4].children.push(new SideNavItem(SettingsTabId.Scrobbling, [],\r\n this.accountService.currentUser$.pipe(\r\n take(1),\r\n switchMap(user => {\r\n if (!user || !this.accountService.hasAdminRole(user)) {\r\n // If no user or user does not have the admin role, return an observable of -1\r\n return of(-1);\r\n } else {\r\n return this.scrobbleService.getScrobbleErrors().pipe(\r\n takeUntilDestroyed(this.destroyRef),\r\n map(d => d.length),\r\n shareReplay({ bufferSize: 1, refCount: true })\r\n );\r\n }\r\n })\r\n ))\r\n );\r\n }\r\n\r\n if (this.sections[2].children.length === 1) {\r\n this.sections[2].children.push(new SideNavItem(SettingsTabId.MALStackImport, []));\r\n }\r\n\r\n }\r\n\r\n this.scrollToActiveItem();\r\n this.cdRef.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.scrollToActiveItem();\r\n }\r\n\r\n scrollToActiveItem() {\r\n const activeFragment = this.route.snapshot.fragment;\r\n if (activeFragment) {\r\n const element = this.document.getElementById('nav-item-' + activeFragment);\r\n if (element) {\r\n element.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n }\r\n }\r\n }\r\n\r\n hasAnyChildren(user: User, section: PrefSection) {\r\n return section.children.filter(item => this.accountService.hasAnyRole(user, item.roles)).length > 0;\r\n }\r\n\r\n collapse() {\r\n this.navService.toggleSideNav();\r\n }\r\n\r\n protected readonly Breakpoint = Breakpoint;\r\n}\r\n", "\r\n @if (accountService.currentUser$ | async; as user) {\r\n\r\n @if((navService.sideNavCollapsed$ | async) === false) {\r\n
\r\n
\r\n\r\n @for(section of sections; track section.title + section.children.length; let idx = $index;) {\r\n @if (hasAnyChildren(user, section)) {\r\n
0}\">{{t(section.title)}}
\r\n @for(item of section.children; track item.fragment) {\r\n @if (accountService.hasAnyRole(user, item.roles)) {\r\n \r\n }\r\n }\r\n }\r\n }\r\n\r\n
\r\n
\r\n @if (utilityService.activeBreakpoint$ | async; as breakpoint) {\r\n @if (breakpoint < Breakpoint.Desktop) {\r\n
\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n
\r\n"], "mappings": "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", "names": ["\u0275\u0275elementStart", "\u0275\u0275elementContainer", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pureFunction2", "_c2", "\u0275\u0275pipeBind1", "ctx_r0", "navService", "sideNavCollapsed$", "highlighted", "\u0275\u0275advance", "inner_r2", "id", "link", "\u0275\u0275sanitizeUrl", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "openLink", "fragment", "queryParams", "\u0275\u0275template", "SideNavItemComponent_Conditional_1_Conditional_1_Conditional_0_Template", "SideNavItemComponent_Conditional_1_Conditional_1_Conditional_1_Template", "SideNavItemComponent_Conditional_1_Conditional_1_Conditional_2_Template", "\u0275\u0275conditional", "\u0275\u0275pureFunction0", "_c3", "SideNavItemComponent_Conditional_1_Conditional_0_Template", "SideNavItemComponent_Conditional_1_Conditional_1_Template", "external", "\u0275\u0275element", "imageUrl", "\u0275\u0275classMapInterpolate1", "icon", "SideNavItemComponent_ng_template_2_Conditional_1_Conditional_2_Template", "SideNavItemComponent_ng_template_2_Conditional_1_Conditional_3_Template", "\u0275\u0275propertyInterpolate", "title", "\u0275\u0275text", "\u0275\u0275textInterpolate", "badgeCount", "SideNavItemComponent_ng_template_2_Conditional_1_Template", "SideNavItemComponent_ng_template_2_Conditional_5_Template", "\u0275\u0275projection", "noIcon", "\u0275\u0275textInterpolate1", "SideNavItemComponent", "constructor", "destroyRef", "inject", "DestroyRef", "router", "Router", "cdRef", "ChangeDetectorRef", "NavService", "utilityService", "UtilityService", "undefined", "comparisonMethod", "events", "pipe", "filter", "event", "NavigationEnd", "takeUntilDestroyed", "map", "evt", "tap", "triggerHighlightCheck", "url", "_", "collapseNavIfApplicable", "subscribe", "ngOnInit", "setTimeout", "routeUrl", "split", "page", "updateHighlight", "includes", "markForCheck", "endsWith", "fragmentEqual", "queryParamsEqual", "startsWith", "Object", "keys", "length", "navigateByUrl", "getActiveBreakpoint", "Breakpoint", "Tablet", "collapseSideNav", "selectors", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "ngContentSelectors", "_c1", "decls", "vars", "consts", "template", "rf", "ctx", "SideNavItemComponent_Conditional_0_Template", "SideNavItemComponent_Conditional_1_Template", "SideNavItemComponent_ng_template_2_Template", "\u0275\u0275templateRefExtractor", "RouterLink", "ImageComponent", "NgTemplateOutlet", "NgClass", "AsyncPipe", "styles", "changeDetection", "SettingFragmentPipe", "transform", "tabID", "translate", "pure", "standalone", "\u0275\u0275element", "\u0275\u0275property", "item_r1", "fragment", "\u0275\u0275pipeBind1", "badgeCount$", "\u0275\u0275template", "PreferenceNavComponent_ng_container_0_Conditional_1_Conditional_0_For_6_Conditional_0_For_3_Conditional_0_Template", "\u0275\u0275conditional", "ctx_r2", "accountService", "hasAnyRole", "user_r2", "roles", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275repeaterCreate", "PreferenceNavComponent_ng_container_0_Conditional_1_Conditional_0_For_6_Conditional_0_For_3_Template", "_forTrack1", "\u0275\u0275pureFunction1", "_c1", "\u0275$index_16_r6", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "t_r7", "section_r5", "title", "\u0275\u0275repeater", "children", "PreferenceNavComponent_ng_container_0_Conditional_1_Conditional_0_For_6_Conditional_0_Template", "hasAnyChildren", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r8", "\u0275\u0275nextContext", "\u0275\u0275resetView", "collapse", "_c2", "navService", "sideNavCollapsed$", "PreferenceNavComponent_ng_container_0_Conditional_1_Conditional_0_Conditional_7_Conditional_0_Template", "ctx", "Breakpoint", "Desktop", "PreferenceNavComponent_ng_container_0_Conditional_1_Conditional_0_For_6_Template", "_forTrack0", "PreferenceNavComponent_ng_container_0_Conditional_1_Conditional_0_Conditional_7_Template", "\u0275\u0275pureFunction3", "_c0", "sideNavVisibility$", "hasValidLicense$", "sections", "tmp_7_0", "utilityService", "activeBreakpoint$", "PreferenceNavComponent_ng_container_0_Conditional_1_Conditional_0_Template", "\u0275\u0275elementContainerStart", "PreferenceNavComponent_ng_container_0_Conditional_1_Template", "tmp_2_0", "currentUser$", "SettingsTabId", "SideNavItem", "constructor", "undefined", "PreferenceNavComponent", "destroyRef", "inject", "DestroyRef", "NavService", "AccountService", "cdRef", "ChangeDetectorRef", "route", "ActivatedRoute", "serverService", "ServerService", "scrobbleService", "ScrobblingService", "router", "Router", "UtilityService", "document", "DOCUMENT", "hasActiveLicense", "Account", "Preferences", "Customize", "Clients", "Theme", "Devices", "UserStats", "General", "Role", "Admin", "Media", "Email", "Users", "Libraries", "Tasks", "CBLImport", "System", "Statistics", "MediaIssues", "pipe", "take", "switchMap", "user", "hasAdminRole", "of", "getMediaErrors", "takeUntilDestroyed", "map", "d", "length", "shareReplay", "bufferSize", "refCount", "KavitaPlus", "collapseSideNavOnMobileNav$", "events", "filter", "event", "NavigationEnd", "evt", "_", "b", "Tablet", "collapsed", "tap", "c", "collapseSideNav", "subscribe", "getActiveBreakpoint", "res", "push", "Scrobbling", "getScrobbleErrors", "MALStackImport", "scrollToActiveItem", "markForCheck", "ngAfterViewInit", "activeFragment", "snapshot", "element", "getElementById", "scrollIntoView", "behavior", "block", "section", "item", "toggleSideNav", "selectors", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "PreferenceNavComponent_ng_container_0_Template", "TranslocoDirective", "NgClass", "AsyncPipe", "SideNavItemComponent", "SettingFragmentPipe", "styles", "changeDetection"] }