{"version":3,"sources":["libs/uikit/src/lib/va-icon/icon.component.ts","libs/uikit/src/lib/va-icon/icon.module.ts","libs/uikit/src/lib/search-box/search-box-input.directive.ts","libs/uikit/src/lib/local-storage.service.ts","libs/uikit/src/lib/search-box/search-box.service.ts","libs/uikit/src/lib/search-box/search-box.component.ts","libs/uikit/src/lib/search-box/va-search-box.module.ts","libs/uikit/src/lib/assets/i18n/en_devel.json","libs/uikit/src/lib/constants.ts","libs/uikit/src/lib/va-mat-table/actions/advanced-column-organizer/advanced-column-organizer.ts","libs/uikit/src/lib/va-mat-table/actions/advanced-column-organizer/advanced-column-organizer.service.ts","libs/uikit/src/lib/va-mat-table/actions/advanced-column-organizer/advanced-column-organizer.compontent.ts","libs/uikit/src/lib/va-mat-table/actions/advanced-column-organizer/advanced-column-organizer.component.html","libs/uikit/src/lib/va-mat-table/actions/advanced-column-organizer/advanced-column-organizer-button.component.ts","libs/uikit/src/lib/va-mat-table/actions/column-sorter/column-sorter.service.ts","libs/uikit/src/lib/va-mat-table/actions/column-sorter/column-sorter.component.ts","libs/uikit/src/lib/va-mat-table/actions/column-sorter/column-sorter.component.html","libs/uikit/src/lib/va-mat-table/va-mat-table.component.ts","libs/uikit/src/lib/va-mat-table/va-mat-table.component.html","libs/uikit/src/lib/va-mat-table/va-mat-table.module.ts","libs/uikit/src/lib/common-pipes/phone-number.pipe.ts","libs/uikit/src/lib/common-pipes/display-value.pipe.ts","libs/uikit/src/lib/common-pipes/common-pipes.module.ts","libs/uikit/src/lib/confirmation/confirmation.module.ts","libs/uikit/src/lib/get-pro-dialog/get-pro-dialog.module.ts","libs/uikit/src/lib/va-cards/va-cards.module.ts","libs/uikit/src/lib/goal-table/goal-table.module.ts","libs/uikit/src/lib/lightbox/lightbox.component.ts","libs/uikit/src/lib/lightbox/lightbox.component.html","libs/uikit/src/lib/lightbox/fullscreen-lightbox.service.ts","libs/uikit/src/lib/local-refreshing-cache.service.ts","node_modules/marked/lib/marked.esm.js","node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs","libs/uikit/src/lib/project-milestones/project-milestones.module.ts","libs/uikit/src/lib/safe-html/safe-html.pipe.ts","libs/uikit/src/lib/safe-html/safe-html.module.ts","libs/uikit/src/lib/va-action-menu/va-action-menu.module.ts","libs/uikit/src/lib/va-badge/va-badge.module.ts","libs/uikit/src/lib/va-breadcrumbs/va-breadcrumbs.module.ts","libs/uikit/src/lib/va-filter-chips/va-filter-chips.module.ts","libs/uikit/src/lib/va-search-select/va-search-select.module.ts","libs/uikit/src/lib/va-items-and-status/va-items-and-status.module.ts","libs/uikit/src/lib/va-multi-select/va-multi-select.component.ts","libs/uikit/src/lib/va-multi-select/va-multi-select.component.html","libs/uikit/src/lib/va-multi-select/va-multi-select.module.ts","libs/uikit/src/lib/url-param.service.ts","libs/uikit/src/lib/va-filter/filter.service.ts","libs/uikit/src/lib/va-filter/filter.module.ts","libs/uikit/src/lib/va-list/va-list.module.ts","libs/uikit/src/lib/va-nav/nav-item-list/nav-item-list.module.ts","libs/uikit/src/lib/va-nav/nav-item/nav-item.module.ts","libs/uikit/src/lib/va-nav/nav.module.ts","libs/uikit/src/lib/va-nested-selector/va-nested-selector.module.ts","libs/uikit/src/lib/va-product-nav/va-product-nav.service.ts","libs/uikit/src/lib/va-product-nav/va-product-nav.module.ts","libs/uikit/src/lib/va-status-banner/va-status-banner.module.ts","libs/uikit/src/lib/va-stencils/stencils.module.ts","libs/uikit/src/lib/wrappers/va-button/va-button.module.ts","libs/uikit/src/lib/wrappers/va-checkbox/va-checkbox.module.ts","libs/uikit/src/lib/wrappers/va-chip/va-chip.module.ts","libs/uikit/src/lib/wrappers/va-expand/va-expand.module.ts","libs/uikit/src/lib/wrappers/va-menu/va-menu.module.ts","libs/uikit/src/lib/wrappers/va-multiline/va-multiline.module.ts","libs/uikit/src/lib/wrappers/va-switch/va-switch.module.ts","libs/uikit/src/lib/va-table/table.module.ts","libs/uikit/src/lib/va-welcome/welcome.module.ts","libs/uikit/src/lib/uikit.module.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { NgIf, NgStyle } from '@angular/common';\n\nexport interface IconDescriptor {\n iconUrl: string;\n name: string;\n diameter?: number;\n}\n\n@Component({\n standalone: true,\n imports: [NgStyle, NgIf],\n selector: 'va-icon',\n template: `\n \n \n \n {{ getAbbreviationForName() }}\n \n
\n \n `,\n styleUrls: ['./icon.component.scss'],\n})\nexport class IconComponent {\n @Input() iconUrl: string;\n @Input() iconName: string; // it seems like the angular template is not recognizing the variable 'name'\n @Input() diameter = 60;\n @Input() backgroundColor = null;\n @Input() borderColor = null;\n @Input() fontColor = 'white';\n\n public getAbbreviationForName(): string {\n const defaultAbbreviation = 'U'; // untitled\n if (this.iconName) {\n // example input \"Partner Central\"\n // example output \"PC\"\n\n // example input \"Partner\"\n // example output \"P\"\n const names = this.iconName.trim().split(' ')?.filter(Boolean);\n return names.length > 1 ? names[0][0] + names[1][0] : names[0][0];\n }\n return defaultAbbreviation;\n }\n\n getIconColorForName(): string {\n // determine an icon color for a product with no icon by using the product name\n const COLOR_CODES = [\n '#EF5350',\n '#42A5F5',\n '#66BB6A',\n '#FFA726',\n '#AB47BC',\n '#FFCA28',\n '#EC407A',\n '#26C6DA',\n '#FF7B57',\n ];\n let nameSum = 0;\n const defaultColor = '#808080';\n if (this.backgroundColor) {\n return this.backgroundColor;\n }\n if (!this.iconName) {\n return defaultColor;\n }\n for (let i = 0; i < this.iconName.length; i++) {\n nameSum += this.iconName[i].charCodeAt(0);\n }\n const index = nameSum % COLOR_CODES.length;\n\n return COLOR_CODES[index];\n }\n\n getIconSize(): any {\n return { 'font-size': this.diameter + 'px' };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [IconComponent],\n declarations: [],\n exports: [IconComponent],\n})\nexport class VaIconModule {}\n","import { ElementRef, Directive, Inject } from '@angular/core';\n\n@Directive({ standalone: true, selector: '[vaSearchInput]' })\nexport class VaSearchInputDirective {\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {}\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n selector(): void {\n this.elementRef.nativeElement.select();\n }\n}\n","import { Injectable } from '@angular/core';\n\nexport interface Storage {\n get(name: string): string | null;\n\n set(name: string, value: string): void;\n\n remove(name: string): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService implements Storage {\n get(name: string): string | null {\n return this.browserSupport ? localStorage.getItem(name) : null;\n }\n\n set(name: string, value: string): string | null {\n if (this.browserSupport) {\n localStorage.setItem(name, value);\n return value;\n } else {\n return null;\n }\n }\n\n remove(name: string): void {\n if (this.browserSupport) {\n localStorage.removeItem(name);\n }\n }\n\n get browserSupport(): boolean {\n return !!typeof Storage;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LocalStorageService } from '../local-storage.service';\n\nconst SEARCH_TERM_FILTER = 'search-term-filter';\n@Injectable({ providedIn: 'root' })\nexport class SearchBoxService {\n constructor(private localStorageService: LocalStorageService) {}\n\n saveSearchTerm(contextKey: string, input: string): void {\n this.localStorageService.set(contextKey || '' + SEARCH_TERM_FILTER, input);\n }\n\n getSearchTerm(contextKey: string): string | null {\n return this.localStorageService.get(contextKey || '' + SEARCH_TERM_FILTER);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { VaSearchInputDirective } from './search-box-input.directive';\nimport { SearchBoxService } from './search-box.service';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n standalone: true,\n imports: [CommonModule, FormsModule, MatIconModule, VaSearchInputDirective],\n selector: 'va-search-box',\n template: `\n \n \n search\n \n `,\n styleUrls: ['search-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchBoxComponent implements OnInit {\n @ViewChild(VaSearchInputDirective, { static: true }) inputArea: VaSearchInputDirective;\n @Output() update = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() submit = new EventEmitter();\n @Input() highlightWhenSelected = true;\n @Input() disabled = false;\n @Input() initial = '';\n @Input() enabledSaveSearchTerm = false;\n @Input() contextKey = '';\n @Input() placeholder = '';\n isSelected = false;\n constructor(private searchBoxService: SearchBoxService) {}\n\n ngOnInit(): void {\n if (!this.initial && this.enabledSaveSearchTerm) {\n this.initial = this.searchBoxService.getSearchTerm(this.contextKey);\n if (this.initial) {\n this.update.emit(this.initial);\n }\n }\n }\n\n submitSearch(term: string): void {\n this.submit.emit(term);\n if (this.enabledSaveSearchTerm) {\n this.searchBoxService.saveSearchTerm(this.contextKey, term);\n }\n this.inputArea.selector();\n }\n\n updateSearch(term: string): void {\n this.update.emit(term);\n if (this.enabledSaveSearchTerm) {\n this.searchBoxService.saveSearchTerm(this.contextKey, term);\n }\n }\n\n focusOnSearchBox(): void {\n window.setTimeout(() => this.inputArea.focus(), 0);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SearchBoxComponent } from './search-box.component';\n\n@NgModule({\n imports: [SearchBoxComponent],\n exports: [SearchBoxComponent],\n})\nexport class VaSearchBoxModule {}\n","{\n \"FRONTEND\": {\n \"UIKIT\": {\n \"VA_FILTER\": {\n \"FILTERS\": \"Filters\",\n \"EXPORT_FILTER\": \"Export filter\",\n \"IMPORT_THIS_STRING\": \"Import this string to apply your current filters:\",\n \"COPY_TO_CLIPBOARD\": \"Copy to clipboard\",\n \"IMPORT_FILTER\": \"Import filter\",\n \"PASTE_YOUR_FILTER_STRING\": \"Paste your filter string to apply its filters\",\n \"APPLY\": \"Apply\",\n \"MANAGE_YOUR_SAVED_FILTERS\": \"Manage your saved filters\",\n \"CHOOSE_FILTER_NAME\": \"Choose a name for your filter\",\n \"SAVE_YOUR_FILTER\": \"Save your filter\",\n \"SAVE_THIS_FILTER\": \"Save this filter\",\n \"YOUR_BOOKMARKED_FILTERS\": \"Your bookmarked filters\",\n \"MANAGE_FILTERS\": \"Manage filters\"\n },\n \"VA_MAT_TABLE\": {\n \"COLUMNS\": \"Columns\"\n }\n },\n \"DATE_RANGE_SELECTOR\": {\n \"FILTERS\": {\n \"DATE\": {\n \"SEVEN_DAYS\": \"Last 7 days\",\n \"THIRTY_DAYS\": \"Last 30 days\",\n \"NINETY_DAYS\": \"Last 90 days\",\n \"SIX_MONTHS\": \"Last 6 months\",\n \"TWELVE_MONTHS\": \"Last 12 months\",\n \"CUSTOM\": \"Custom\",\n \"MONTH\": \"Month\",\n \"QUARTER\": \"Quarter\",\n \"CHIP\": \"Date\"\n },\n \"QUARTER\": {\n \"FIRST_QUARTER\": \"Q1\",\n \"SECOND_QUARTER\": \"Q2\",\n \"THIRD_QUARTER\": \"Q3\",\n \"FOURTH_QUARTER\": \"Q4\"\n }\n },\n \"COMMON\": {\n \"ACTION_LABELS\": {\n \"CANCEL\": \"Cancel\",\n \"APPLY\": \"Apply\"\n }\n },\n \"TITLE\": \"Selected Date Range\",\n \"DATE_PICKER\": {\n \"START_DATE\": \"Start date\",\n \"END_DATE\": \"End date\"\n },\n \"COMPARE_TO\": \"Compare to\",\n \"PERIOD\": \"Period\"\n }\n }\n}\n","export const WEBLATE_COMPONENT_NAME = 'common/uikit';\n","/*\nNOTE:\nThis is the expected interface of the fields inputted into this component from the va-filter2-table\ncomponent. Changing any fields here would require changing fields in the va-filter2-table\ndefinitions respective interface. If the interface changes you might have to do some mapping or update\nthe implementation of the organizer to maintain functionality.\n/frontend/angular/projects/va-filter2-table/src/lib/va-table-definition/va-table-definition.ts\n*/\nexport enum Pinned {\n PINNED_UNSET = 0,\n PINNED_LEFT = 1,\n PINNED_RIGHT = 2,\n}\n\nexport interface ColumnDefinition {\n id: string;\n displayName: string;\n pinned?: Pinned;\n hidden?: boolean;\n}\n\nexport interface ColumnInfo {\n id: string;\n name: string;\n isVisible: boolean;\n pinned?: Pinned;\n}\n\nexport interface GroupDefinition {\n id: string;\n name: string;\n columns: string[];\n}\n\nexport interface GroupInfo {\n id: string;\n name: string;\n columns: ColumnInfo[];\n}\n","import { Injectable } from '@angular/core';\nimport { ColumnDefinition, ColumnInfo, GroupDefinition, GroupInfo, Pinned } from './advanced-column-organizer';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable()\nexport class AdvancedColumnOrganizerService {\n private searchTerm$$ = new BehaviorSubject('');\n searchTerm$: Observable = this.searchTerm$$.asObservable();\n\n private columnDefs$$ = new BehaviorSubject([]);\n columnDefs$: Observable = this.columnDefs$$.asObservable();\n\n private groupDefs$$ = new BehaviorSubject([]);\n groupDefs$: Observable = this.groupDefs$$.asObservable();\n\n private selectedOrderedColumns$$ = new BehaviorSubject([]);\n selectedOrderedColumns$: Observable = this.selectedOrderedColumns$$.asObservable();\n\n columnDefsByID$: Observable<{ [id: string]: ColumnDefinition }>;\n selectedColumns$: Observable;\n searchedGroups$: Observable;\n pinnedLeftColumns$: Observable;\n pinnedRightColumns$: Observable;\n\n translator: TranslateService;\n\n constructor(translator: TranslateService) {\n this.translator = translator;\n this.columnDefsByID$ = this.columnDefs$.pipe(\n map((columnDefs) => {\n const columnDefsByID: { [id: string]: ColumnDefinition } = {};\n columnDefs.map((cd) => {\n columnDefsByID[cd.id] = cd;\n });\n return columnDefsByID;\n }),\n );\n\n this.selectedColumns$ = this.getSelectedColumns$();\n this.searchedGroups$ = this.getSearchedGroups$();\n this.pinnedLeftColumns$ = this.getPinnedLeftColumns$();\n this.pinnedRightColumns$ = this.getPinnedRightColumns$();\n }\n\n configure(\n saveKey: string,\n colDefs: ColumnDefinition[],\n groupDefs: GroupDefinition[],\n useI18NTranslations: boolean,\n ): void {\n if (useI18NTranslations) {\n colDefs = (colDefs || []).map((cd) => {\n cd.displayName = this.translator.instant(cd.displayName);\n return cd;\n });\n groupDefs = (groupDefs || []).map((gd) => {\n gd.name = this.translator.instant(gd.name);\n return gd;\n });\n }\n\n this.columnDefs$$.next(colDefs);\n this.groupDefs$$.next(groupDefs);\n let selectedOrderedColumns: string[] = this.columnDefs$$.value\n .filter((c) => !c.pinned && !c.hidden)\n .map((c) => c.id);\n const storedConfigJson: string | null = localStorage.getItem(`${saveKey}-visible-column-ids`);\n if (storedConfigJson) {\n selectedOrderedColumns = JSON.parse(storedConfigJson);\n }\n this.selectedOrderedColumns$$.next(selectedOrderedColumns);\n }\n\n getPinnedLeftColumns$(): Observable {\n return this.pinnedColumns$(Pinned.PINNED_LEFT);\n }\n\n getSelectedColumns$(): Observable {\n return combineLatest([this.selectedOrderedColumns$, this.columnDefsByID$]).pipe(\n map(([selectedColumnIDs, keyedColumns]): ColumnInfo[] => {\n return selectedColumnIDs.map((id: string): ColumnInfo => {\n return {\n id: id,\n name: keyedColumns[id].displayName,\n isVisible: !keyedColumns[id]?.hidden,\n pinned: Pinned.PINNED_UNSET,\n };\n });\n }),\n );\n }\n\n getPinnedRightColumns$(): Observable {\n return this.pinnedColumns$(Pinned.PINNED_RIGHT);\n }\n\n pinnedColumns$(pinSide: Pinned): Observable {\n return this.columnDefs$.pipe(\n map((columnDefs: ColumnDefinition[]): ColumnInfo[] => {\n const pinnedColumns = columnDefs.filter((columnDef) => columnDef.pinned === pinSide);\n return pinnedColumns.map(\n (columnDef: ColumnDefinition): ColumnInfo => ({\n id: columnDef.id,\n name: columnDef.displayName,\n isVisible: true,\n pinned: pinSide,\n }),\n );\n }),\n );\n }\n\n getSearchedGroups$(): Observable {\n return combineLatest([\n this.groupDefs$,\n this.searchTerm$,\n this.selectedOrderedColumns$,\n this.columnDefsByID$,\n this.columnDefs$,\n ]).pipe(\n map(([groupDefs, searchTerm, selectedOrderedColumns, keyedColumns, allColumns]) => {\n if (!groupDefs || groupDefs.length <= 0) {\n groupDefs = [\n {\n name: this.translator.instant('FRONTEND.UIKIT.VA_MAT_TABLE.COLUMNS'),\n id: 'allColumns',\n columns: allColumns.map((c) => c.id),\n },\n ];\n }\n const groups: GroupInfo[] = groupDefs.map(\n (groupDef: GroupDefinition): GroupInfo => ({\n id: groupDef.id,\n name: groupDef.name,\n columns: groupDef.columns.map(\n (id: string): ColumnInfo => ({\n id: id,\n name: keyedColumns[id].displayName,\n isVisible:\n selectedOrderedColumns.indexOf(id) !== -1 ||\n keyedColumns[id].pinned === Pinned.PINNED_LEFT ||\n keyedColumns[id].pinned === Pinned.PINNED_RIGHT,\n pinned: keyedColumns[id].pinned,\n }),\n ),\n }),\n );\n return this.filterGroupsBySearchTerm(groups, searchTerm);\n }),\n );\n }\n\n updateSearchTerm(st: string): void {\n this.searchTerm$$.next(st);\n }\n\n filterGroupsBySearchTerm(groups: GroupInfo[], searchTerm: string): GroupInfo[] {\n const columnMatchesSearchTerm = (column, st) => column.name.toLowerCase().indexOf(st.toLowerCase()) !== -1;\n if (!searchTerm) {\n return groups;\n }\n return groups\n .filter((group) => {\n return group.columns.some((column) => columnMatchesSearchTerm(column, searchTerm));\n })\n .map(\n (group: GroupInfo): GroupInfo => ({\n ...group,\n columns: group.columns.filter((column) => columnMatchesSearchTerm(column, searchTerm)),\n }),\n );\n }\n\n setColumnVisibility(id: string, isVisible: boolean): void {\n const cols = this.selectedOrderedColumns$$.value;\n const index = cols.indexOf(id);\n if (isVisible) {\n if (index === -1) {\n cols.push(id);\n }\n } else {\n if (index !== -1) {\n cols.splice(index, 1);\n }\n }\n this.selectedOrderedColumns$$.next(cols);\n }\n\n save(saveName: string): void {\n if (!localStorage) {\n return;\n }\n\n if (saveName) {\n const selectedOrderedColumns: string[] = this.selectedOrderedColumns$$.getValue();\n localStorage.setItem(`${saveName}-visible-column-ids`, JSON.stringify(selectedOrderedColumns));\n }\n }\n\n selectAll(columnGroup: GroupInfo): void {\n columnGroup.columns\n .filter((column) => !column.pinned)\n .map((column) => {\n this.setColumnVisibility(column.id, true);\n });\n }\n\n deselectAll(columnGroup: GroupInfo): void {\n columnGroup.columns\n .filter((column) => !column.pinned)\n .map((column) => {\n this.setColumnVisibility(column.id, false);\n });\n }\n\n columnDroppedInList(prevIndex: number, curIndex: number): void {\n const columns: string[] = this.selectedOrderedColumns$$.getValue();\n moveItemInArray(columns, prevIndex, curIndex);\n this.selectedOrderedColumns$$.next(columns);\n }\n\n getSelectedColumns(): string[] {\n return this.selectedOrderedColumns$$.value;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { AdvancedColumnOrganizerService } from './advanced-column-organizer.service';\nimport { GroupInfo, ColumnInfo, ColumnDefinition, GroupDefinition } from './advanced-column-organizer';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable } from 'rxjs';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n// @dynamic\n@Component({\n selector: 'va-mat-table-advanced-column-organizer',\n templateUrl: './advanced-column-organizer.component.html',\n styleUrls: ['./advanced-column-organizer.component.scss'],\n providers: [AdvancedColumnOrganizerService],\n})\nexport class AdvancedColumnOrganizerComponent {\n saveName: string;\n activeTab: string | null;\n selectedColumns: string[];\n\n constructor(\n private advancedColumnOrganizerService: AdvancedColumnOrganizerService,\n @Inject(MAT_DIALOG_DATA)\n public dialogData: {\n saveName: string;\n columnConfigs: ColumnDefinition[];\n groupConfigs: GroupDefinition[];\n useI18NTranslations: boolean;\n },\n public breakpointObserver: BreakpointObserver,\n public dialogRef: MatDialogRef,\n ) {\n this.saveName = dialogData.saveName;\n this.loadColumns();\n this.getActiveTab();\n }\n\n get selectedColumns$(): Observable {\n return this.advancedColumnOrganizerService.selectedColumns$;\n }\n\n get pinnedLeftColumns$(): Observable {\n return this.advancedColumnOrganizerService.pinnedLeftColumns$;\n }\n\n get pinnedRightColumns$(): Observable {\n return this.advancedColumnOrganizerService.pinnedRightColumns$;\n }\n\n get searchedGroups$(): Observable {\n return this.advancedColumnOrganizerService.searchedGroups$;\n }\n\n get searchTerm$(): Observable {\n return this.advancedColumnOrganizerService.searchTerm$;\n }\n\n updateSearchTerm(event: string): void {\n this.advancedColumnOrganizerService.updateSearchTerm(event);\n }\n\n setColumnVisibility(id: string, isVisible: boolean): void {\n this.advancedColumnOrganizerService.setColumnVisibility(id, isVisible);\n }\n\n columnDroppedInList(event: CdkDragDrop): void {\n this.advancedColumnOrganizerService.columnDroppedInList(event.item.data.columnIndex, event.currentIndex);\n }\n\n save(): void {\n this.selectedColumns = this.advancedColumnOrganizerService.getSelectedColumns();\n this.dialogRef.close(true);\n this.advancedColumnOrganizerService.save(this.saveName);\n }\n\n loadColumns(): void {\n this.advancedColumnOrganizerService.configure(\n this.saveName,\n this.dialogData.columnConfigs,\n this.dialogData.groupConfigs,\n this.dialogData.useI18NTranslations,\n );\n }\n\n selectAll(columnGroup: GroupInfo): void {\n this.advancedColumnOrganizerService.selectAll(columnGroup);\n }\n\n deselectAll(columnGroup: GroupInfo): void {\n this.advancedColumnOrganizerService.deselectAll(columnGroup);\n }\n\n onClose(): void {\n this.dialogRef.close();\n }\n\n isMobileScreen(): boolean {\n return this.breakpointObserver.isMatched('(max-width: 820px)');\n }\n\n setActiveTab(currentTab: string): void {\n sessionStorage.setItem('columnManagerCurrentTab', currentTab);\n }\n getActiveTab(): void {\n this.activeTab = sessionStorage.getItem('columnManagerCurrentTab');\n }\n}\n","\n

\n Manage Columns\n \n

\n\n\n \n \n
\n
\n \n
\n\n
\n \n
\n
\n
\n\n \n \n
\n \n \n
\n \n
\n
\n\n \n
\n \n
\n
\n \n
\n
\n
\n\n\n \n \n\n\n\n\n\n
\n
\n \n\n \n \n
\n No columns matched '{{ searchTerm$ | async }}'. Please try another term.\n
\n
\n\n \n \n \n
\n

\n {{ columnGroup.name }}\n \n

\n
    \n \n
  • \n 0\"\n (change)=\"setColumnVisibility(column.id, $event.checked)\"\n >\n {{ column.name }}\n \n
  • \n
    \n
\n
\n
\n
\n
\n
\n
\n\n\n\n
\n
Arrange Columns
\n\n
\n \n
\n
\n lock\n
\n
{{ column.name }}
\n
\n\n \n
\n \n
\n drag_indicator\n
\n\n
\n {{ columnInfo.name }}\n
\n
\n {{ columnInfo.name }}\n
\n
\n \n
\n\n
\n
\n
\n\n \n
\n
\n lock\n
\n
{{ column.name }}
\n
\n
\n \n
\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ColumnDefinition, GroupDefinition, Pinned } from './advanced-column-organizer';\nimport { take } from 'rxjs/operators';\nimport { AdvancedColumnOrganizerComponent } from './advanced-column-organizer.compontent';\n\nexport interface DialogData {\n saveName: string | undefined;\n columnConfigs: ColumnDefinition[];\n groupConfigs: GroupDefinition[];\n useI18NTranslations: boolean;\n}\n\n@Component({\n selector: 'va-mat-table-advanced-column-organizer-button',\n template: '',\n})\nexport class AdvancedColumnOrganizerButtonComponent implements OnInit {\n @Input() saveName?: string;\n @Input() columnConfigs: ColumnDefinition[];\n @Input() groupConfigs: GroupDefinition[];\n @Input() useI18NTranslations?: boolean;\n @Output() columnsChange: EventEmitter = new EventEmitter();\n\n constructor(private dialog: MatDialog) {}\n\n ngOnInit(): void {\n this.emitInitialVisibleColumns();\n }\n\n emitInitialVisibleColumns(): void {\n window.requestAnimationFrame(() => {\n if (this.saveName) {\n const storedVisibleColumns: string | null = localStorage.getItem(`${this.saveName}-visible-column-ids`);\n if (storedVisibleColumns) {\n try {\n const visibleColumns: string[] = JSON.parse(storedVisibleColumns);\n if (visibleColumns) {\n this.columnsChange.emit(visibleColumns);\n return;\n }\n } catch (error) {\n console.error('Could not parse storedVisibleColumns', error);\n }\n }\n }\n if (this.columnConfigs) {\n const cols = this.columnConfigs\n .filter((col) => !col.hidden && col.pinned != Pinned.PINNED_LEFT && col.pinned != Pinned.PINNED_RIGHT)\n .map((col) => col.id);\n this.columnsChange.emit(cols);\n }\n });\n }\n\n openManager(): void {\n const dialogData: DialogData = {\n saveName: this.saveName,\n columnConfigs: this.columnConfigs,\n groupConfigs: this.groupConfigs,\n useI18NTranslations: !!this.useI18NTranslations,\n };\n const dialogRef = this.dialog.open(AdvancedColumnOrganizerComponent, {\n width: '800px',\n panelClass: 'advanced-column-organizer-panel',\n autoFocus: false,\n data: dialogData,\n });\n dialogRef\n .afterClosed()\n .pipe(take(1))\n .subscribe((save) => {\n if (save) {\n this.columnsChange.emit(dialogRef.componentInstance.selectedColumns);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nexport interface ColumnInfo {\n id: string;\n name?: string;\n hidden?: boolean;\n}\n\n@Injectable()\nexport class ColumnSorterService {\n loadSavedColumnInfo(columnInfo: ColumnInfo[], saveName?: string): ColumnInfo[] | undefined {\n // Only load if a save name is passed in\n if (saveName) {\n if (!localStorage) {\n return;\n }\n\n const loadedInfoJSON = localStorage.getItem(`${saveName}-columns`);\n\n // Found save data, validate the data\n if (loadedInfoJSON) {\n return this.validateSavedData(columnInfo, JSON.parse(loadedInfoJSON), saveName);\n }\n\n this.saveColumnInfo(columnInfo, saveName);\n }\n return columnInfo;\n }\n\n private validateSavedData(\n passedInColumns: ColumnInfo[],\n loadedColumns: ColumnInfo[],\n saveName?: string,\n ): ColumnInfo[] {\n // Check to make sure all columns are accounted for\n // This will add any new columns to the end of the list\n passedInColumns.forEach((col) => {\n const colFound = loadedColumns.find((searchCol) => searchCol.id === col.id);\n if (!colFound) {\n loadedColumns.push(col);\n } else {\n // Update the saved data\n colFound.name = col.name;\n }\n });\n\n // Remove any columns that are no longer present\n loadedColumns = loadedColumns.filter((col) => !!passedInColumns.find((searchCol) => searchCol.id === col.id));\n\n // Save the new set of columns\n this.saveColumnInfo(loadedColumns, saveName);\n\n return loadedColumns;\n }\n\n saveColumnInfo(columnInfo: ColumnInfo[], saveName?: string): void {\n // Only save if a save name is passed in\n if (saveName) {\n if (!localStorage) {\n return;\n }\n\n localStorage.setItem(`${saveName}-columns`, JSON.stringify(columnInfo));\n }\n }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { map, shareReplay } from 'rxjs';\nimport { ColumnInfo, ColumnSorterService } from './column-sorter.service';\n\nexport interface ColumnSorterColumn {\n columnId: string;\n columnName: string;\n hidden?: boolean;\n}\n\n@Component({\n selector: 'va-mat-table-column-sorter, button[va-mat-table-column-sorter]',\n templateUrl: './column-sorter.component.html',\n styleUrls: ['./column-sorter.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ColumnSorterService],\n})\nexport class ColumnSorterComponent implements OnInit, OnChanges, AfterViewInit {\n @Output()\n columnsChange: EventEmitter = new EventEmitter();\n @Input() iconName = 'view_column';\n @Input() buttonLabel: string;\n @Input()\n columns: string[];\n @Input()\n columnNames: string[];\n @Input()\n columnConfigs: ColumnSorterColumn[];\n @Input()\n saveName?: string;\n @Input()\n useI18NTranslations?: boolean;\n\n columnInfo: ColumnInfo[] | undefined;\n\n private columnsUpdated = false;\n private columnNamesUpdated = false;\n\n readonly isMobile$ = this.breakpointObserver.observe(Breakpoints.Handset).pipe(\n map((result) => result.matches),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n constructor(\n private elementRef: ElementRef,\n private columnSorterService: ColumnSorterService,\n private readonly breakpointObserver: BreakpointObserver,\n ) {}\n\n ngOnInit(): void {\n this.calculateColumnInformation();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.columns) {\n this.columnsUpdated = true;\n }\n if (changes.columnNames) {\n this.columnNamesUpdated = true;\n }\n if ((this.columnsUpdated && this.columnNamesUpdated) || !!changes.columnConfigs) {\n this.calculateColumnInformation();\n this.columnsUpdated = false;\n this.columnNamesUpdated = false;\n }\n }\n\n ngAfterViewInit(): void {\n this.elementRef.nativeElement.classList += 'va-mat-button-no-input';\n }\n\n private calculateColumnInformation(): void {\n // If the column config is passed in, use that else use the passed in columns and names\n if (this.columnConfigs) {\n this.columnInfo = this.columnConfigs.map((colConfig) => {\n return {\n id: colConfig.columnId,\n name: colConfig.columnName,\n hidden: !!colConfig.hidden,\n };\n });\n } else {\n this.columnInfo = this.columns.map((currElement, index) => {\n return {\n id: currElement,\n name: this.columnNames[index],\n hidden: false,\n };\n });\n }\n this.columnInfo = this.columnSorterService.loadSavedColumnInfo(this.columnInfo, this.saveName);\n this.emitColumns(false);\n }\n\n columnMenuDropped(event: CdkDragDrop): void {\n moveItemInArray(this.columnInfo!, event.item.data.columnIndex, event.currentIndex);\n this.emitColumns(true);\n }\n\n toggleSelectedColumn(columnId: string): void {\n const colFound = this.columnInfo!.find((col) => col.id === columnId)!;\n colFound.hidden = !colFound.hidden;\n this.emitColumns(true);\n }\n\n private emitColumns(saveColumns: boolean): void {\n // Only emit the columns on the next animation frame available\n window.requestAnimationFrame(() => {\n this.columnsChange.emit(this.columnInfo!.filter((colInfo) => !colInfo.hidden).map((colInfo) => colInfo.id));\n if (saveColumns) {\n this.columnSorterService.saveColumnInfo(this.columnInfo!, this.saveName);\n }\n });\n }\n}\n","\n\n\n
\n \n drag_indicator\n \n \n \n\n \n drag_indicator\n \n \n \n \n
\n \n
\n\n \n {{ name | translate }}\n \n \n {{ name }}\n \n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * @deprecated Use `VaFilteredMatTableComponent`\n */\n@Component({\n selector: 'va-mat-table',\n templateUrl: './va-mat-table.component.html',\n styleUrls: ['./va-mat-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VaMaterialTableComponent {}\n","
\n \n
\n\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSortModule } from '@angular/material/sort';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\nimport { VaSearchBoxModule } from '../search-box/va-search-box.module';\nimport { AdvancedColumnOrganizerButtonComponent } from './actions/advanced-column-organizer/advanced-column-organizer-button.component';\nimport { AdvancedColumnOrganizerComponent } from './actions/advanced-column-organizer/advanced-column-organizer.compontent';\nimport { ColumnSorterComponent } from './actions/column-sorter/column-sorter.component';\nimport { VaMaterialTableComponent } from './va-mat-table.component';\n\n@NgModule({\n declarations: [\n VaMaterialTableComponent,\n ColumnSorterComponent,\n AdvancedColumnOrganizerButtonComponent,\n AdvancedColumnOrganizerComponent,\n ],\n imports: [\n CommonModule,\n MatTableModule,\n MatSortModule,\n MatButtonModule,\n MatIconModule,\n MatCardModule,\n DragDropModule,\n MatMenuModule,\n MatCheckboxModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n MatDialogModule,\n VaSearchBoxModule,\n MatTabsModule,\n ],\n exports: [\n VaMaterialTableComponent,\n ColumnSorterComponent,\n AdvancedColumnOrganizerComponent,\n AdvancedColumnOrganizerButtonComponent,\n ],\n})\nexport class VaMaterialTableModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CountryCode, formatNumber } from 'libphonenumber-js';\n\nexport function formatPhoneNumber(\n phoneNumber: string | number,\n formatForInternational: boolean,\n countryCode?: string,\n): string {\n const numberString = phoneNumber.toString();\n if (numberString === '') {\n return '';\n }\n const formatting = formatForInternational ? 'INTERNATIONAL' : 'NATIONAL';\n if (countryCode as CountryCode) {\n const newCountryCode = countryCode;\n try {\n return formatNumber(numberString, newCountryCode, formatting);\n } catch (e) {\n return numberString;\n }\n }\n return numberString;\n}\n\n@Pipe({ name: 'phone' })\nexport class PhoneNumberFormatPipe implements PipeTransform {\n transform(phoneNumber: string | number, countryCode?: string): string {\n return formatPhoneNumber(phoneNumber, false, countryCode);\n }\n}\n\n@Pipe({ name: 'phone_intl' })\nexport class InternationalPhoneNumberFormatPipe implements PipeTransform {\n transform(phoneNumber: string | number, countryCode?: string): string {\n return formatPhoneNumber(phoneNumber, true, countryCode);\n }\n}\n","import { CurrencyPipe, DecimalPipe, PercentPipe } from '@angular/common';\nimport { OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\nconst DEFAULT_CURRENCY_CODE = 'USD';\nconst DEFAULT_LOCALE = 'en-us';\nexport type DisplayType = 'currency' | 'percentage' | 'number' | 'string' | 'translate' | 'fraction';\n\nexport interface DisplayValueDescriptor {\n value: number | string;\n displayType: DisplayType;\n outOfValue?: number | string;\n currencyCode?: string;\n locale?: string;\n maxDecimalPlaces?: number;\n}\n\n@Pipe({ name: 'displayValue' })\nexport class DisplayValuePipe implements PipeTransform, OnDestroy {\n value: number | string;\n outOfValue?: number | string;\n displayType?: DisplayType;\n currencyCode: string;\n locale = DEFAULT_LOCALE;\n displayValue: any;\n\n onTranslationChange?: Subscription;\n onLangChange?: Subscription;\n onDefaultLangChange?: Subscription;\n digitsInfo?: string;\n\n constructor(private translateService: TranslateService) {}\n\n updateValue(): void {\n switch (this.displayType) {\n case 'currency': {\n const currencyPipe = new CurrencyPipe(this.locale);\n this.displayValue = currencyPipe.transform(this.value, this.currencyCode, 'symbol', '1.0-2', this.locale);\n break;\n }\n case 'percentage': {\n const percentPipe = new PercentPipe(this.locale);\n this.displayValue = percentPipe.transform(this.value, this.digitsInfo ? this.digitsInfo : '1.0-2', this.locale);\n break;\n }\n case 'number': {\n const decimalPipe = new DecimalPipe(this.locale);\n this.displayValue = decimalPipe.transform(this.value, this.digitsInfo, this.locale);\n break;\n }\n case 'string':\n this.displayValue = this.value;\n break;\n case 'translate':\n this.displayValue = this.translateService.instant(this.value as string);\n break;\n case 'fraction':\n this.displayValue = this.value + '/' + this.outOfValue;\n break;\n }\n }\n\n transform(displayValue: DisplayValueDescriptor): any {\n if (!displayValue) {\n return undefined;\n }\n const { value, outOfValue, displayType, currencyCode = DEFAULT_CURRENCY_CODE, locale } = displayValue;\n this.value = value;\n this.outOfValue = outOfValue;\n this.displayType = displayType;\n this.currencyCode = currencyCode;\n this.locale = locale || this.locale;\n this.digitsInfo =\n displayValue.maxDecimalPlaces || displayValue.maxDecimalPlaces === 0\n ? '1.0-' + displayValue.maxDecimalPlaces\n : undefined;\n\n this.updateValue();\n\n if (!this.onTranslationChange) {\n this.onTranslationChange = this.translateService.onTranslationChange.subscribe(() => {\n this.updateValue();\n });\n }\n if (!this.onLangChange) {\n this.onLangChange = this.translateService.onLangChange.subscribe(() => {\n this.updateValue();\n });\n }\n if (!this.onDefaultLangChange) {\n this.onDefaultLangChange = this.translateService.onDefaultLangChange.subscribe(() => {\n this.updateValue();\n });\n }\n\n return this.displayValue;\n }\n\n ngOnDestroy(): void {\n if (typeof this.onTranslationChange !== 'undefined') {\n this.onTranslationChange.unsubscribe();\n this.onTranslationChange = undefined;\n }\n if (typeof this.onLangChange !== 'undefined') {\n this.onLangChange.unsubscribe();\n this.onLangChange = undefined;\n }\n if (typeof this.onDefaultLangChange !== 'undefined') {\n this.onDefaultLangChange.unsubscribe();\n this.onDefaultLangChange = undefined;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { InternationalPhoneNumberFormatPipe, PhoneNumberFormatPipe } from './phone-number.pipe';\nimport { DisplayValuePipe } from './display-value.pipe';\n\n@NgModule({\n declarations: [InternationalPhoneNumberFormatPipe, PhoneNumberFormatPipe, DisplayValuePipe],\n exports: [InternationalPhoneNumberFormatPipe, PhoneNumberFormatPipe, DisplayValuePipe],\n providers: [InternationalPhoneNumberFormatPipe, PhoneNumberFormatPipe, DisplayValuePipe],\n})\nexport class CommonPipesModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ConfirmationDialogComponent } from './confirmation-dialog.component';\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatDialogModule],\n declarations: [ConfirmationDialogComponent],\n providers: [],\n exports: [],\n})\nexport class ConfirmationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { UpgradeCTADialogComponent } from './get-pro-dialog.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatIconModule,\n MatButtonModule,\n MatChipsModule,\n MatProgressSpinnerModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n ],\n exports: [UpgradeCTADialogComponent],\n declarations: [UpgradeCTADialogComponent],\n providers: [],\n})\nexport class UpgradeCTADialogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaCardComponent } from './va-card/va-card.component';\nimport { VaCardHeaderComponent } from './va-card-header/va-card-header.component';\nimport { VaCardLinkButtonComponent } from './va-card-link-button/va-card-link-button.component';\nimport { VaCardBreakLineComponent } from './va-card-break-line/va-card-break-line.component';\nimport { VaCardContentComponent } from './va-card-content/va-card-content.component';\nimport { VaCardBreakGroupComponent } from './va-card-break-group/va-card-break-group.component';\nimport { VerticalLayoutDirective, HorizontalLayoutDirective } from './va-layout.directive';\nimport { NumberWithChangeComponent } from './va-card-content/options/number-with-change/number-with-change.component';\nimport { CommonPipesModule } from '../common-pipes/common-pipes.module';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\n\n@NgModule({\n declarations: [\n VaCardComponent,\n VaCardHeaderComponent,\n VaCardLinkButtonComponent,\n VaCardBreakLineComponent,\n VaCardContentComponent,\n VaCardBreakGroupComponent,\n VerticalLayoutDirective,\n HorizontalLayoutDirective,\n NumberWithChangeComponent,\n ],\n imports: [\n CommonModule,\n MatCardModule,\n MatIconModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n MatTooltipModule,\n CommonPipesModule,\n ],\n exports: [\n VaCardComponent,\n VaCardHeaderComponent,\n VaCardLinkButtonComponent,\n VaCardBreakLineComponent,\n VaCardContentComponent,\n VaCardBreakGroupComponent,\n VerticalLayoutDirective,\n HorizontalLayoutDirective,\n NumberWithChangeComponent,\n ],\n})\nexport class VaCardsModule {}\n","import { NgModule } from '@angular/core';\nimport { VaGoalTableComponent } from './goal-table.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaCardsModule } from '../va-cards/va-cards.module';\nimport { CommonModule } from '@angular/common';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\n\n@NgModule({\n imports: [\n MatTableModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n VaCardsModule,\n CommonModule,\n MatCardModule,\n MatIconModule,\n ],\n exports: [VaGoalTableComponent],\n declarations: [VaGoalTableComponent],\n providers: [],\n})\nexport class VaGoalTableModule {}\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VaLightboxConfig } from './lightbox.interface';\n\n/**\n * @deprecated Use {@link VaFullscreenLightboxService} instead.\n */\n@Component({\n selector: 'va-lightbox',\n templateUrl: 'lightbox.component.html',\n styleUrls: ['lightbox.component.scss'],\n standalone: true,\n imports: [NgIf, MatIconModule, MatButtonModule],\n})\nexport class VaLightboxComponent {\n @Input() useSrcSet = true;\n currentIndex: number;\n lightboxConfig: VaLightboxConfig;\n\n isVisible: boolean;\n\n @Output() closed: EventEmitter = new EventEmitter();\n\n open(config: VaLightboxConfig): void {\n this.lightboxConfig = config;\n this.currentIndex = config.index;\n this.isVisible = true;\n }\n\n getSrcSetForImage(image: string): string | null {\n if (!image) {\n return null;\n }\n return `${image}=s1360 1360w, ${image}=s680 680w`;\n }\n\n close(): void {\n this.isVisible = false;\n this.closed.emit();\n }\n\n previousImage(): void {\n const isFirstImage = this.currentIndex === 0;\n if (isFirstImage) {\n this.currentIndex = this.lightboxConfig.imageUrls.length - 1;\n } else {\n this.currentIndex--;\n }\n }\n\n nextImage(): void {\n const isLastImage = this.currentIndex === this.lightboxConfig.imageUrls.length - 1;\n if (isLastImage) {\n this.currentIndex = 0;\n } else {\n this.currentIndex++;\n }\n }\n}\n","\n
\n
\n \n
\n \n \n
\n \n
\n
\n \n
\n\n","import { Dialog } from '@angular/cdk/dialog';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { VaLightboxComponent } from './lightbox.component';\nimport { VaLightboxConfig } from './lightbox.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class VaFullscreenLightboxService {\n constructor(private readonly dialog: Dialog) {}\n\n async open(config: VaLightboxConfig): Promise {\n const ref = this.dialog.open(VaLightboxComponent, { data: config, height: '100%', width: '100%' });\n if (!ref.componentInstance) throw new Error('failed to load lightbox component');\n\n ref.componentInstance.open(config);\n await firstValueFrom(ref.componentInstance.closed.asObservable());\n ref.close();\n }\n}\n","import { Observable, of } from 'rxjs';\nimport { startWith, tap } from 'rxjs/operators';\nimport { LocalStorageService } from './local-storage.service';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalRefreshingCacheService {\n /** Default expiry in Milliseconds */\n defaultExpires = 86400000; // 24Hrs\n\n constructor(private localstorage: LocalStorageService) {}\n /**\n * Get the Cache value and return it as a observable combined with the passed in Observable,\n * Refreshing the cache with the newest value from the observable.\n * @param key: the key of the value to be refreshed\n * @param value$: A observable value to be cached\n * @param expiry: Optional time to expire default is 24 hours\n */\n public getCacheValueAndRefresh(key: string, value$: Observable, expiry?: number): Observable {\n if (!key) {\n return of(undefined);\n }\n const cachedValue = this.getCacheValue(key);\n return value$.pipe(\n tap((newValue) => {\n this.setCacheValue(key, newValue, expiry);\n return newValue;\n }),\n startWith(cachedValue as T),\n );\n }\n\n /**\n * Update the Cached value for a key\n * @param key: the key to the value to be updated\n * @param newValue: a value to update the cache\n * @param expiry: (Optional) time to expire default is 24 hours\n */\n public setCacheValue(key: string, newValue: T, expiry?: number): T | undefined {\n if (!key) {\n return;\n }\n return this.setCacheRecord(key, newValue, expiry);\n }\n\n /**\n * Remove the Cached entry for the key\n * @param key: the key to the value to be removed\n */\n public deleteCacheValue(key: string): void {\n if (key) {\n this.localstorage.remove(key);\n }\n }\n\n /**\n * Get value for the specified key from the local storage or undefined\n * @param key: the key or type to get for\n */\n public getCacheValue(key: string): T | undefined {\n if (!key) {\n return undefined;\n }\n const cachedValue = this.getCacheRecord(key);\n if (cachedValue && cachedValue.value) {\n return cachedValue.value as T;\n }\n return undefined;\n }\n\n private getCacheRecord(key: string): CacheStorageRecord | null {\n let cachedValue = JSON.parse(this.localstorage.get(key)!) as CacheStorageRecord | null;\n // If it exists check its expiry time\n if (cachedValue && cachedValue.expires) {\n // If the expiry is past, nullify the value\n if (new Date(cachedValue.expires).getTime() < Date.now()) {\n this.localstorage.remove(key);\n cachedValue = null;\n }\n }\n return cachedValue;\n }\n\n private setCacheRecord(key: string, value: T, expires: number = this.defaultExpires): T {\n const _expires: Date = this.sanitizeAndGenerateDateExpiry(expires);\n this.localstorage.set(\n key,\n JSON.stringify({\n expires: _expires,\n value: value,\n }),\n );\n return value;\n }\n\n private sanitizeAndGenerateDateExpiry(expires: number): Date {\n const expiryDate: Date = new Date(Date.now() + Math.abs(expires));\n // Don't allow expiry dates in the past\n if (expiryDate.getTime() <= Date.now()) {\n return new Date(Date.now() + expires);\n }\n return expiryDate;\n }\n}\n\nexport interface CacheStorageRecord {\n expires: Date;\n value: T;\n}\n","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nlet defaults = getDefaults();\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = ch => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\nconst noopTest = {\n exec: function noopTest() {}\n};\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, t => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n blankLine = false;\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {\n // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) {\n // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return {\n text: c\n };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n const lLength = match[0].length - 1;\n let rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [{\n type: 'text',\n raw: text,\n text\n }]\n };\n }\n }\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [{\n type: 'text',\n raw: text,\n text\n }]\n };\n }\n }\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\nblock.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nblock.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n.replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n.getRegex();\nblock.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = {\n ...block\n};\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n.getRegex();\nblock.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n.replace('table', block.gfm.table) // interrupt paragraphs with table\n.replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n.getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n// lookbehind is not available on Safari as of version 16\n// inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\ninline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\ninline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\ninline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = {\n ...inline\n};\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token, lastToken, cutSrc, lastParagraphClipped;\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(extTokenizer => {\n if (token = extTokenizer.call({\n lexer: this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({\n src,\n tokens\n });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(extTokenizer => {\n if (token = extTokenizer.call({\n lexer: this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
' + (escaped ? code : escape(code, true)) + '
\\n';\n }\n return '
' + (escaped ? code : escape(code, true)) + '
\\n';\n }\n\n /**\n * @param {string} quote\n */\n blockquote(quote) {\n return `
\\n${quote}
\\n`;\n }\n html(html) {\n return html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n /**\n * @param {string} text\n */\n listitem(text) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return ' ';\n }\n\n /**\n * @param {string} text\n */\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n\n /**\n * @param {string} header\n * @param {string} body\n */\n table(header, body) {\n if (body) body = `${body}`;\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n\n /**\n * @param {string} content\n */\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align ? `<${type} align=\"${flags.align}\">` : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n * @param {string} text\n */\n strong(text) {\n return `${text}`;\n }\n\n /**\n * @param {string} text\n */\n em(text) {\n return `${text}`;\n }\n\n /**\n * @param {string} text\n */\n codespan(text) {\n return `${text}`;\n }\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n /**\n * @param {string} text\n */\n del(text) {\n return `${text}`;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * @param {string} value\n */\n serialize(value) {\n return value.toLowerCase().trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n case 'table':\n {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default:\n {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br':\n {\n out += renderer.br();\n break;\n }\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n default:\n {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\nclass Hooks {\n constructor(options) {\n this.options = options || defaults;\n }\n static passThroughHooks = new Set(['preprocess', 'postprocess']);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\nfunction onError(silent, async, callback) {\n return e => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n}\nfunction parseMarkdown(lexer, parser) {\n return (src, opt, callback) => {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n const origOpt = {\n ...opt\n };\n opt = {\n ...marked.defaults,\n ...origOpt\n };\n const throwError = onError(opt.silent, opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkSanitizeDeprecation(opt);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n const done = function (err) {\n let out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err ? throwError(err) : callback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length) return done();\n let pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(src => lexer(src, opt)).then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then(tokens => parser(tokens, opt)).then(html => opt.hooks ? opt.hooks.postprocess(html) : html).catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options = marked.setOptions = function (opt) {\n marked.defaults = {\n ...marked.defaults,\n ...opt\n };\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.getDefaults = getDefaults;\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function (...args) {\n const extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n args.forEach(pack => {\n // copy options to new object\n const opts = {\n ...pack\n };\n\n // set async to true if it was set to true before\n opts.async = marked.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach(ext => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) {\n // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = marked.defaults.hooks || new Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = arg => {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks[prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(pack.walkTokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case 'table':\n {\n for (const cell of token.header) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list':\n {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\nexport { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, Pipe, InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, EventEmitter, Input, Output, SecurityContext, NgModule } from '@angular/core';\nimport { Subject, merge, of, timer } from 'rxjs';\nimport { switchMap, mapTo, distinctUntilChanged, shareReplay, startWith, map, takeUntil, first } from 'rxjs/operators';\nimport * as i1 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { Renderer, marked } from 'marked';\nexport { Renderer as MarkedRenderer } from 'marked';\nimport * as i1$1 from '@angular/common/http';\nimport * as i4 from '@angular/platform-browser';\nconst _c0 = [\"*\"];\nconst BUTTON_TEXT_COPY = 'Copy';\nconst BUTTON_TEXT_COPIED = 'Copied';\nlet ClipboardButtonComponent = /*#__PURE__*/(() => {\n class ClipboardButtonComponent {\n constructor() {\n this._buttonClick$ = new Subject();\n this.copied$ = this._buttonClick$.pipe(switchMap(() => merge(of(true), timer(3000).pipe(mapTo(false)))), distinctUntilChanged(), shareReplay(1));\n this.copiedText$ = this.copied$.pipe(startWith(false), map(copied => copied ? BUTTON_TEXT_COPIED : BUTTON_TEXT_COPY));\n }\n onCopyToClipboardClick() {\n this._buttonClick$.next();\n }\n }\n ClipboardButtonComponent.ɵfac = function ClipboardButtonComponent_Factory(t) {\n return new (t || ClipboardButtonComponent)();\n };\n ClipboardButtonComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ClipboardButtonComponent,\n selectors: [[\"markdown-clipboard\"]],\n decls: 4,\n vars: 7,\n consts: [[1, \"markdown-clipboard-button\", 3, \"click\"]],\n template: function ClipboardButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\", 0);\n i0.ɵɵpipe(1, \"async\");\n i0.ɵɵlistener(\"click\", function ClipboardButtonComponent_Template_button_click_0_listener() {\n return ctx.onCopyToClipboardClick();\n });\n i0.ɵɵtext(2);\n i0.ɵɵpipe(3, \"async\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"copied\", i0.ɵɵpipeBind1(1, 3, ctx.copied$));\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, ctx.copiedText$));\n }\n },\n dependencies: [i1.AsyncPipe],\n encapsulation: 2,\n changeDetection: 0\n });\n return ClipboardButtonComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass ClipboardOptions {}\nclass ClipboardRenderOptions extends ClipboardOptions {}\n\n/* eslint-disable */\nclass KatexSpecificOptions {}\nlet LanguagePipe = /*#__PURE__*/(() => {\n class LanguagePipe {\n transform(value, language) {\n if (value == null) {\n value = '';\n }\n if (language == null) {\n language = '';\n }\n if (typeof value !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid value type [${typeof value}]`);\n return value;\n }\n if (typeof language !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid parameter [${typeof language}]`);\n return value;\n }\n return '```' + language + '\\n' + value + '\\n```';\n }\n }\n LanguagePipe.ɵfac = function LanguagePipe_Factory(t) {\n return new (t || LanguagePipe)();\n };\n LanguagePipe.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"language\",\n type: LanguagePipe,\n pure: true\n });\n return LanguagePipe;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar PrismPlugin = /*#__PURE__*/function (PrismPlugin) {\n PrismPlugin[\"CommandLine\"] = \"command-line\";\n PrismPlugin[\"LineHighlight\"] = \"line-highlight\";\n PrismPlugin[\"LineNumbers\"] = \"line-numbers\";\n return PrismPlugin;\n}(PrismPlugin || {});\nclass MarkedOptions {}\n\n/* eslint-disable max-len */\nconst errorJoyPixelsNotLoaded = '[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information';\nconst errorKatexNotLoaded = '[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information';\nconst errorMermaidNotLoaded = '[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information';\nconst errorClipboardNotLoaded = '[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information';\nconst errorClipboardViewContainerRequired = '[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function';\nconst errorSrcWithoutHttpClient = '[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information';\n/* eslint-enable max-len */\nconst SECURITY_CONTEXT = new InjectionToken('SECURITY_CONTEXT');\nclass ExtendedRenderer extends Renderer {\n constructor() {\n super(...arguments);\n this.ɵNgxMarkdownRendererExtended = false;\n }\n}\nlet MarkdownService = /*#__PURE__*/(() => {\n class MarkdownService {\n constructor(platform, securityContext, http, clipboardOptions, options, sanitizer) {\n this.platform = platform;\n this.securityContext = securityContext;\n this.http = http;\n this.clipboardOptions = clipboardOptions;\n this.sanitizer = sanitizer;\n this.DEFAULT_PARSE_OPTIONS = {\n decodeHtml: false,\n inline: false,\n emoji: false,\n mermaid: false,\n markedOptions: undefined\n };\n this.DEFAULT_RENDER_OPTIONS = {\n clipboard: false,\n clipboardOptions: undefined,\n katex: false,\n katexOptions: undefined,\n mermaid: false,\n mermaidOptions: undefined\n };\n this.DEFAULT_MARKED_OPTIONS = {\n renderer: new Renderer()\n };\n this.DEFAULT_KATEX_OPTIONS = {\n delimiters: [{\n left: \"$$\",\n right: \"$$\",\n display: true\n }, {\n left: \"$\",\n right: \"$\",\n display: false\n }, {\n left: \"\\\\(\",\n right: \"\\\\)\",\n display: false\n }, {\n left: \"\\\\begin{equation}\",\n right: \"\\\\end{equation}\",\n display: true\n }, {\n left: \"\\\\begin{align}\",\n right: \"\\\\end{align}\",\n display: true\n }, {\n left: \"\\\\begin{alignat}\",\n right: \"\\\\end{alignat}\",\n display: true\n }, {\n left: \"\\\\begin{gather}\",\n right: \"\\\\end{gather}\",\n display: true\n }, {\n left: \"\\\\begin{CD}\",\n right: \"\\\\end{CD}\",\n display: true\n }, {\n left: \"\\\\[\",\n right: \"\\\\]\",\n display: true\n }]\n };\n this.DEFAULT_MERMAID_OPTIONS = {\n startOnLoad: false\n };\n this.DEFAULT_CLIPBOARD_OPTIONS = {\n buttonComponent: undefined\n };\n this._reload$ = new Subject();\n this.reload$ = this._reload$.asObservable();\n this.options = options;\n }\n get options() {\n return this._options;\n }\n set options(value) {\n this._options = {\n ...this.DEFAULT_MARKED_OPTIONS,\n ...value\n };\n }\n get renderer() {\n return this.options.renderer;\n }\n set renderer(value) {\n this.options.renderer = value;\n }\n parse(markdown, options = this.DEFAULT_PARSE_OPTIONS) {\n const {\n decodeHtml,\n inline,\n emoji,\n mermaid,\n markedOptions = this.options\n } = options;\n if (mermaid) {\n this.renderer = this.extendRenderer(markedOptions.renderer || new Renderer());\n }\n const trimmed = this.trimIndentation(markdown);\n const decoded = decodeHtml ? this.decodeHtml(trimmed) : trimmed;\n const emojified = emoji ? this.parseEmoji(decoded) : decoded;\n const marked = this.parseMarked(emojified, markedOptions, inline);\n return this.sanitizer.sanitize(this.securityContext, marked) || '';\n }\n render(element, options = this.DEFAULT_RENDER_OPTIONS, viewContainerRef) {\n const {\n clipboard,\n clipboardOptions,\n katex,\n katexOptions,\n mermaid,\n mermaidOptions\n } = options;\n if (clipboard) {\n this.renderClipboard(element, viewContainerRef, {\n ...this.DEFAULT_CLIPBOARD_OPTIONS,\n ...this.clipboardOptions,\n ...clipboardOptions\n });\n }\n if (katex) {\n this.renderKatex(element, {\n ...this.DEFAULT_KATEX_OPTIONS,\n ...katexOptions\n });\n }\n if (mermaid) {\n this.renderMermaid(element, {\n ...this.DEFAULT_MERMAID_OPTIONS,\n ...mermaidOptions\n });\n }\n this.highlight(element);\n }\n reload() {\n this._reload$.next();\n }\n getSource(src) {\n if (!this.http) {\n throw new Error(errorSrcWithoutHttpClient);\n }\n return this.http.get(src, {\n responseType: 'text'\n }).pipe(map(markdown => this.handleExtension(src, markdown)));\n }\n highlight(element) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof Prism === 'undefined' || typeof Prism.highlightAllUnder === 'undefined') {\n return;\n }\n if (!element) {\n element = document;\n }\n const noLanguageElements = element.querySelectorAll('pre code:not([class*=\"language-\"])');\n Array.prototype.forEach.call(noLanguageElements, x => x.classList.add('language-none'));\n Prism.highlightAllUnder(element);\n }\n decodeHtml(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n const textarea = document.createElement('textarea');\n textarea.innerHTML = html;\n return textarea.value;\n }\n extendRenderer(renderer) {\n const extendedRenderer = renderer;\n if (extendedRenderer.ɵNgxMarkdownRendererExtended === true) {\n return renderer;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const defaultCode = renderer.code;\n renderer.code = function (code, language, isEscaped) {\n return language === 'mermaid' ? `
    ${code}
    ` : defaultCode.call(this, code, language, isEscaped);\n };\n extendedRenderer.ɵNgxMarkdownRendererExtended = true;\n return renderer;\n }\n handleExtension(src, markdown) {\n const urlProtocolIndex = src.lastIndexOf('://');\n const urlWithoutProtocol = urlProtocolIndex > -1 ? src.substring(urlProtocolIndex + 4) : src;\n const lastSlashIndex = urlWithoutProtocol.lastIndexOf('/');\n const lastUrlSegment = lastSlashIndex > -1 ? urlWithoutProtocol.substring(lastSlashIndex + 1).split('?')[0] : '';\n const lastDotIndex = lastUrlSegment.lastIndexOf('.');\n const extension = lastDotIndex > -1 ? lastUrlSegment.substring(lastDotIndex + 1) : '';\n return !!extension && extension !== 'md' ? '```' + extension + '\\n' + markdown + '\\n```' : markdown;\n }\n parseMarked(html, markedOptions, inline = false) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n if (inline) {\n return marked.parseInline(html, markedOptions);\n }\n return marked.parse(html, markedOptions);\n }\n parseEmoji(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n if (typeof joypixels === 'undefined' || typeof joypixels.shortnameToUnicode === 'undefined') {\n throw new Error(errorJoyPixelsNotLoaded);\n }\n return joypixels.shortnameToUnicode(html);\n }\n renderKatex(element, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof katex === 'undefined' || typeof renderMathInElement === 'undefined') {\n throw new Error(errorKatexNotLoaded);\n }\n renderMathInElement(element, options);\n }\n renderClipboard(element, viewContainerRef, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof ClipboardJS === 'undefined') {\n throw new Error(errorClipboardNotLoaded);\n }\n if (!viewContainerRef) {\n throw new Error(errorClipboardViewContainerRequired);\n }\n const {\n buttonComponent,\n buttonTemplate\n } = options;\n // target every
     elements\n      const preElements = element.querySelectorAll('pre');\n      for (let i = 0; i < preElements.length; i++) {\n        const preElement = preElements.item(i);\n        // create 
     wrapper element\n        const preWrapperElement = document.createElement('div');\n        preWrapperElement.style.position = 'relative';\n        preElement.parentNode.insertBefore(preWrapperElement, preElement);\n        preWrapperElement.appendChild(preElement);\n        // create toolbar element\n        const toolbarWrapperElement = document.createElement('div');\n        toolbarWrapperElement.style.position = 'absolute';\n        toolbarWrapperElement.style.top = '.5em';\n        toolbarWrapperElement.style.right = '.5em';\n        toolbarWrapperElement.style.opacity = '0';\n        toolbarWrapperElement.style.transition = 'opacity 250ms ease-out';\n        preWrapperElement.insertAdjacentElement('beforeend', toolbarWrapperElement);\n        // register listener to show/hide toolbar\n        preElement.onmouseover = () => toolbarWrapperElement.style.opacity = '1';\n        preElement.onmouseout = () => toolbarWrapperElement.style.opacity = '0';\n        // declare embeddedViewRef holding variable\n        let embeddedViewRef;\n        // use provided component via input property\n        // or provided via ClipboardOptions provider\n        if (buttonComponent) {\n          const componentRef = viewContainerRef.createComponent(buttonComponent);\n          embeddedViewRef = componentRef.hostView;\n        }\n        // use provided template via input property\n        else if (buttonTemplate) {\n          embeddedViewRef = viewContainerRef.createEmbeddedView(buttonTemplate);\n        }\n        // use default component\n        else {\n          const componentRef = viewContainerRef.createComponent(ClipboardButtonComponent);\n          embeddedViewRef = componentRef.hostView;\n        }\n        // declare clipboard instance variable\n        let clipboardInstance;\n        // attach clipboard.js to root node\n        embeddedViewRef.rootNodes.forEach(node => {\n          node.onmouseover = () => toolbarWrapperElement.style.opacity = '1';\n          toolbarWrapperElement.appendChild(node);\n          clipboardInstance = new ClipboardJS(node, {\n            text: () => preElement.innerText\n          });\n        });\n        // destroy clipboard instance when view is destroyed\n        embeddedViewRef.onDestroy(() => clipboardInstance.destroy());\n      }\n    }\n    renderMermaid(element, options = this.DEFAULT_MERMAID_OPTIONS) {\n      if (!isPlatformBrowser(this.platform)) {\n        return;\n      }\n      if (typeof mermaid === 'undefined' || typeof mermaid.init === 'undefined') {\n        throw new Error(errorMermaidNotLoaded);\n      }\n      const mermaidElements = element.querySelectorAll('.mermaid');\n      if (mermaidElements.length === 0) {\n        return;\n      }\n      mermaid.initialize(options);\n      mermaid.init(mermaidElements);\n    }\n    trimIndentation(markdown) {\n      if (!markdown) {\n        return '';\n      }\n      let indentStart;\n      return markdown.split('\\n').map(line => {\n        let lineIdentStart = indentStart;\n        if (line.length > 0) {\n          lineIdentStart = isNaN(lineIdentStart) ? line.search(/\\S|$/) : Math.min(line.search(/\\S|$/), lineIdentStart);\n        }\n        if (isNaN(indentStart)) {\n          indentStart = lineIdentStart;\n        }\n        return lineIdentStart ? line.substring(lineIdentStart) : line;\n      }).join('\\n');\n    }\n  }\n  MarkdownService.ɵfac = function MarkdownService_Factory(t) {\n    return new (t || MarkdownService)(i0.ɵɵinject(PLATFORM_ID), i0.ɵɵinject(SECURITY_CONTEXT), i0.ɵɵinject(i1$1.HttpClient, 8), i0.ɵɵinject(ClipboardOptions, 8), i0.ɵɵinject(MarkedOptions, 8), i0.ɵɵinject(i4.DomSanitizer));\n  };\n  MarkdownService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: MarkdownService,\n    factory: MarkdownService.ɵfac\n  });\n  return MarkdownService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nlet MarkdownComponent = /*#__PURE__*/(() => {\n  class MarkdownComponent {\n    constructor(element, markdownService, viewContainerRef) {\n      this.element = element;\n      this.markdownService = markdownService;\n      this.viewContainerRef = viewContainerRef;\n      // Event emitters\n      this.error = new EventEmitter();\n      this.load = new EventEmitter();\n      this.ready = new EventEmitter();\n      this._commandLine = false;\n      this._clipboard = false;\n      this._emoji = false;\n      this._inline = false;\n      this._katex = false;\n      this._lineHighlight = false;\n      this._lineNumbers = false;\n      this._mermaid = false;\n      this.destroyed$ = new Subject();\n    }\n    get inline() {\n      return this._inline;\n    }\n    set inline(value) {\n      this._inline = this.coerceBooleanProperty(value);\n    }\n    // Plugin - clipboard\n    get clipboard() {\n      return this._clipboard;\n    }\n    set clipboard(value) {\n      this._clipboard = this.coerceBooleanProperty(value);\n    }\n    // Plugin - emoji\n    get emoji() {\n      return this._emoji;\n    }\n    set emoji(value) {\n      this._emoji = this.coerceBooleanProperty(value);\n    }\n    // Plugin - katex\n    get katex() {\n      return this._katex;\n    }\n    set katex(value) {\n      this._katex = this.coerceBooleanProperty(value);\n    }\n    // Plugin - mermaid\n    get mermaid() {\n      return this._mermaid;\n    }\n    set mermaid(value) {\n      this._mermaid = this.coerceBooleanProperty(value);\n    }\n    // Plugin - lineHighlight\n    get lineHighlight() {\n      return this._lineHighlight;\n    }\n    set lineHighlight(value) {\n      this._lineHighlight = this.coerceBooleanProperty(value);\n    }\n    // Plugin - lineNumbers\n    get lineNumbers() {\n      return this._lineNumbers;\n    }\n    set lineNumbers(value) {\n      this._lineNumbers = this.coerceBooleanProperty(value);\n    }\n    // Plugin - commandLine\n    get commandLine() {\n      return this._commandLine;\n    }\n    set commandLine(value) {\n      this._commandLine = this.coerceBooleanProperty(value);\n    }\n    ngOnChanges() {\n      this.loadContent();\n    }\n    loadContent() {\n      if (this.data != null) {\n        this.handleData();\n        return;\n      }\n      if (this.src != null) {\n        this.handleSrc();\n        return;\n      }\n    }\n    ngAfterViewInit() {\n      if (!this.data && !this.src) {\n        this.handleTransclusion();\n      }\n      this.markdownService.reload$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.loadContent());\n    }\n    ngOnDestroy() {\n      this.destroyed$.next();\n      this.destroyed$.complete();\n    }\n    render(markdown, decodeHtml = false) {\n      const parsedOptions = {\n        decodeHtml,\n        inline: this.inline,\n        emoji: this.emoji,\n        mermaid: this.mermaid\n      };\n      const renderOptions = {\n        clipboard: this.clipboard,\n        clipboardOptions: {\n          buttonComponent: this.clipboardButtonComponent,\n          buttonTemplate: this.clipboardButtonTemplate\n        },\n        katex: this.katex,\n        katexOptions: this.katexOptions,\n        mermaid: this.mermaid,\n        mermaidOptions: this.mermaidOptions\n      };\n      const parsed = this.markdownService.parse(markdown, parsedOptions);\n      this.element.nativeElement.innerHTML = parsed;\n      this.handlePlugins();\n      this.markdownService.render(this.element.nativeElement, renderOptions, this.viewContainerRef);\n      this.ready.emit();\n    }\n    coerceBooleanProperty(value) {\n      return value != null && `${String(value)}` !== 'false';\n    }\n    handleData() {\n      this.render(this.data);\n    }\n    handleSrc() {\n      this.markdownService.getSource(this.src).subscribe({\n        next: markdown => {\n          this.render(markdown);\n          this.load.emit(markdown);\n        },\n        error: error => this.error.emit(error)\n      });\n    }\n    handleTransclusion() {\n      this.render(this.element.nativeElement.innerHTML, true);\n    }\n    handlePlugins() {\n      if (this.commandLine) {\n        this.setPluginClass(this.element.nativeElement, PrismPlugin.CommandLine);\n        this.setPluginOptions(this.element.nativeElement, {\n          dataFilterOutput: this.filterOutput,\n          dataHost: this.host,\n          dataPrompt: this.prompt,\n          dataOutput: this.output,\n          dataUser: this.user\n        });\n      }\n      if (this.lineHighlight) {\n        this.setPluginOptions(this.element.nativeElement, {\n          dataLine: this.line,\n          dataLineOffset: this.lineOffset\n        });\n      }\n      if (this.lineNumbers) {\n        this.setPluginClass(this.element.nativeElement, PrismPlugin.LineNumbers);\n        this.setPluginOptions(this.element.nativeElement, {\n          dataStart: this.start\n        });\n      }\n    }\n    setPluginClass(element, plugin) {\n      const preElements = element.querySelectorAll('pre');\n      for (let i = 0; i < preElements.length; i++) {\n        const classes = plugin instanceof Array ? plugin : [plugin];\n        preElements.item(i).classList.add(...classes);\n      }\n    }\n    setPluginOptions(element, options) {\n      const preElements = element.querySelectorAll('pre');\n      for (let i = 0; i < preElements.length; i++) {\n        Object.keys(options).forEach(option => {\n          const attributeValue = options[option];\n          if (attributeValue) {\n            const attributeName = this.toLispCase(option);\n            preElements.item(i).setAttribute(attributeName, attributeValue.toString());\n          }\n        });\n      }\n    }\n    toLispCase(value) {\n      const upperChars = value.match(/([A-Z])/g);\n      if (!upperChars) {\n        return value;\n      }\n      let str = value.toString();\n      for (let i = 0, n = upperChars.length; i < n; i++) {\n        str = str.replace(new RegExp(upperChars[i]), '-' + upperChars[i].toLowerCase());\n      }\n      if (str.slice(0, 1) === '-') {\n        str = str.slice(1);\n      }\n      return str;\n    }\n  }\n  MarkdownComponent.ɵfac = function MarkdownComponent_Factory(t) {\n    return new (t || MarkdownComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(MarkdownService), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n  };\n  MarkdownComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n    type: MarkdownComponent,\n    selectors: [[\"markdown\"], [\"\", \"markdown\", \"\"]],\n    inputs: {\n      data: \"data\",\n      src: \"src\",\n      inline: \"inline\",\n      clipboard: \"clipboard\",\n      clipboardButtonComponent: \"clipboardButtonComponent\",\n      clipboardButtonTemplate: \"clipboardButtonTemplate\",\n      emoji: \"emoji\",\n      katex: \"katex\",\n      katexOptions: \"katexOptions\",\n      mermaid: \"mermaid\",\n      mermaidOptions: \"mermaidOptions\",\n      lineHighlight: \"lineHighlight\",\n      line: \"line\",\n      lineOffset: \"lineOffset\",\n      lineNumbers: \"lineNumbers\",\n      start: \"start\",\n      commandLine: \"commandLine\",\n      filterOutput: \"filterOutput\",\n      host: \"host\",\n      prompt: \"prompt\",\n      output: \"output\",\n      user: \"user\"\n    },\n    outputs: {\n      error: \"error\",\n      load: \"load\",\n      ready: \"ready\"\n    },\n    features: [i0.ɵɵNgOnChangesFeature],\n    ngContentSelectors: _c0,\n    decls: 1,\n    vars: 0,\n    template: function MarkdownComponent_Template(rf, ctx) {\n      if (rf & 1) {\n        i0.ɵɵprojectionDef();\n        i0.ɵɵprojection(0);\n      }\n    },\n    encapsulation: 2\n  });\n  return MarkdownComponent;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MarkdownPipe = /*#__PURE__*/(() => {\n  class MarkdownPipe {\n    constructor(domSanitizer, elementRef, markdownService, viewContainerRef, zone) {\n      this.domSanitizer = domSanitizer;\n      this.elementRef = elementRef;\n      this.markdownService = markdownService;\n      this.viewContainerRef = viewContainerRef;\n      this.zone = zone;\n    }\n    transform(value, options) {\n      if (value == null) {\n        return '';\n      }\n      if (typeof value !== 'string') {\n        console.error(`MarkdownPipe has been invoked with an invalid value type [${typeof value}]`);\n        return value;\n      }\n      const markdown = this.markdownService.parse(value, options);\n      this.zone.onStable.pipe(first()).subscribe(() => this.markdownService.render(this.elementRef.nativeElement, options, this.viewContainerRef));\n      return this.domSanitizer.bypassSecurityTrustHtml(markdown);\n    }\n  }\n  MarkdownPipe.ɵfac = function MarkdownPipe_Factory(t) {\n    return new (t || MarkdownPipe)(i0.ɵɵdirectiveInject(i4.DomSanitizer, 16), i0.ɵɵdirectiveInject(i0.ElementRef, 16), i0.ɵɵdirectiveInject(MarkdownService, 16), i0.ɵɵdirectiveInject(i0.ViewContainerRef, 16), i0.ɵɵdirectiveInject(i0.NgZone, 16));\n  };\n  MarkdownPipe.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n    name: \"markdown\",\n    type: MarkdownPipe,\n    pure: true\n  });\n  return MarkdownPipe;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst sharedDeclarations = [ClipboardButtonComponent, LanguagePipe, MarkdownComponent, MarkdownPipe];\nconst sharedEntryComponents = [ClipboardButtonComponent];\nlet MarkdownModule = /*#__PURE__*/(() => {\n  class MarkdownModule {\n    static forRoot(markdownModuleConfig) {\n      return {\n        ngModule: MarkdownModule,\n        providers: [MarkdownService, markdownModuleConfig && markdownModuleConfig.loader || [], markdownModuleConfig && markdownModuleConfig.clipboardOptions || [], markdownModuleConfig && markdownModuleConfig.markedOptions || [], {\n          provide: SECURITY_CONTEXT,\n          useValue: markdownModuleConfig && markdownModuleConfig.sanitize != null ? markdownModuleConfig.sanitize : SecurityContext.HTML\n        }]\n      };\n    }\n    static forChild() {\n      return {\n        ngModule: MarkdownModule\n      };\n    }\n  }\n  MarkdownModule.ɵfac = function MarkdownModule_Factory(t) {\n    return new (t || MarkdownModule)();\n  };\n  MarkdownModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n    type: MarkdownModule\n  });\n  MarkdownModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n    imports: [CommonModule]\n  });\n  return MarkdownModule;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/* eslint-disable */\nvar MermaidAPI;\n(function (MermaidAPI) {\n  let SecurityLevel;\n  (function (SecurityLevel) {\n    /**\r\n     * (default) tags in text are encoded, click functionality is disabled\r\n     */\n    SecurityLevel[\"Strict\"] = \"strict\";\n    /**\r\n     * tags in text are allowed, click functionality is enabled\r\n     */\n    SecurityLevel[\"Loose\"] = \"loose\";\n    /**\r\n     * html tags in text are allowed, (only script element is removed), click functionality is enabled\r\n     */\n    SecurityLevel[\"Antiscript\"] = \"antiscript\";\n    /**\r\n     * with this security level all rendering takes place in a sandboxed iframe.\r\n     * This prevent any javascript running in the context.\r\n     * This may hinder interactive functionality of the diagram like scripts,\r\n     * popups in sequence diagram or links to other tabs/targets etc.\r\n     */\n    SecurityLevel[\"Sandbox\"] = \"sandbox\";\n  })(SecurityLevel = MermaidAPI.SecurityLevel || (MermaidAPI.SecurityLevel = {}));\n  let Theme;\n  (function (Theme) {\n    /**\r\n     * Designed to modified, as the name implies it is supposed to be used as the base for making custom themes.\r\n     */\n    Theme[\"Base\"] = \"base\";\n    /**\r\n     * A theme full of light greens that is easy on the eyes.\r\n     */\n    Theme[\"Forest\"] = \"forest\";\n    /**\r\n     * A theme that would go well with other dark colored elements.\r\n     */\n    Theme[\"Dark\"] = \"dark\";\n    /**\r\n     *  The default theme for all diagrams.\r\n     */\n    Theme[\"Default\"] = \"default\";\n    /**\r\n     * The theme to be used for black and white printing\r\n     */\n    Theme[\"Neutral\"] = \"neutral\";\n  })(Theme = MermaidAPI.Theme || (MermaidAPI.Theme = {}));\n  let LogLevel;\n  (function (LogLevel) {\n    LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\n    LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n    LogLevel[LogLevel[\"Warn\"] = 3] = \"Warn\";\n    LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\n    LogLevel[LogLevel[\"Fatal\"] = 5] = \"Fatal\";\n  })(LogLevel = MermaidAPI.LogLevel || (MermaidAPI.LogLevel = {}));\n})(MermaidAPI || (MermaidAPI = {}));\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { ClipboardButtonComponent, ClipboardOptions, ClipboardRenderOptions, ExtendedRenderer, KatexSpecificOptions, LanguagePipe, MarkdownComponent, MarkdownModule, MarkdownPipe, MarkdownService, MarkedOptions, MermaidAPI, PrismPlugin, SECURITY_CONTEXT, errorClipboardNotLoaded, errorClipboardViewContainerRequired, errorJoyPixelsNotLoaded, errorKatexNotLoaded, errorMermaidNotLoaded, errorSrcWithoutHttpClient };\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { ProjectMilestonesComponent } from './project-milestones.component';\nimport { VaIconModule } from './../va-icon/icon.module';\nimport { MarkdownModule } from 'ngx-markdown';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatCardModule,\n    MatExpansionModule,\n    MatIconModule,\n    MatProgressBarModule,\n    VaIconModule,\n    MarkdownModule,\n  ],\n  declarations: [ProjectMilestonesComponent],\n  exports: [ProjectMilestonesComponent, MarkdownModule],\n})\nexport class ProjectMilestonesModule {}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: 'vaSanitize' })\nexport class VaSanitizePipe implements PipeTransform {\n  constructor(private domSanitizer: DomSanitizer) {}\n\n  transform(html: any): any {\n    return this.domSanitizer.sanitize(SecurityContext.HTML, html);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VaSanitizePipe } from './safe-html.pipe';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [VaSanitizePipe],\n  exports: [VaSanitizePipe],\n})\nexport class VaSafeHtmlModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { VaActionMenuComponent } from './va-action-menu.component';\n\n@NgModule({\n  imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule],\n  declarations: [VaActionMenuComponent],\n  exports: [VaActionMenuComponent],\n})\nexport class VaActionMenuModule {}\n","import { NgModule } from '@angular/core';\nimport { VaBadgeComponent } from './va-badge.component';\n\n@NgModule({\n  declarations: [VaBadgeComponent],\n  exports: [VaBadgeComponent],\n})\nexport class VaBadgeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { VaBreadcrumbsComponent } from './va-breadcrumbs.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\n\n@NgModule({\n  declarations: [VaBreadcrumbsComponent],\n  imports: [\n    CommonModule,\n    RouterModule,\n    TranslateModule,\n    LexiconModule.forChild({\n      componentName: WEBLATE_COMPONENT_NAME,\n      baseTranslation: baseTranslation,\n    }),\n  ],\n  exports: [VaBreadcrumbsComponent],\n})\nexport class VaBreadcrumbsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonPipesModule } from '../common-pipes/common-pipes.module';\nimport { VaFilterChipContainerComponent } from './va-filter-chip-container/va-filter-chip-container.component';\nimport { VaFilterChipComponent } from './va-filter-chip/va-filter-chip.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\n\n@NgModule({\n  declarations: [VaFilterChipContainerComponent, VaFilterChipComponent],\n  exports: [VaFilterChipContainerComponent, VaFilterChipComponent],\n  imports: [\n    CommonModule,\n    MatIconModule,\n    TranslateModule,\n    LexiconModule.forChild({\n      componentName: WEBLATE_COMPONENT_NAME,\n      baseTranslation: baseTranslation,\n    }),\n    CommonPipesModule,\n    MatDialogModule,\n    MatDividerModule,\n    MatButtonModule,\n    MatRippleModule,\n    MatMenuModule,\n  ],\n})\nexport class VaFilterChipsModule {}\n","import { SearchSelectComponent } from './search-select.component';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { VaSearchBoxModule } from '../search-box/va-search-box.module';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    VaSearchBoxModule,\n    MatIconModule,\n    TranslateModule,\n    LexiconModule.forChild({\n      componentName: WEBLATE_COMPONENT_NAME,\n      baseTranslation: baseTranslation,\n    }),\n  ],\n  declarations: [SearchSelectComponent],\n  exports: [SearchSelectComponent],\n})\nexport class VaSearchSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VaSearchSelectModule } from '../va-search-select/va-search-select.module';\nimport { ItemsAndStatusComponent } from './va-items-and-status.component';\n\n@NgModule({\n  imports: [CommonModule, VaSearchSelectModule],\n  declarations: [ItemsAndStatusComponent],\n  exports: [ItemsAndStatusComponent],\n})\nexport class VaItemsAndStatusModule {}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nexport interface MultiSelectOption {\n  id: string;\n  text: string;\n}\n\n// SearchFunc can be used to filter options on fields other than optionText\nexport type SearchFunc = (searchTerm: string, option: any) => boolean;\n\n@Component({\n  selector: 'va-multi-select',\n  templateUrl: './va-multi-select.component.html',\n  styleUrls: ['va-multi-select.component.scss'],\n})\nexport class VaMultiSelectComponent {\n  @Output() selection = new EventEmitter();\n\n  @Input() options: MultiSelectOption[];\n  @Input() selected: MultiSelectOption[] = [];\n  @Input() displayProperty: string;\n  @Input() placeholderText: string;\n  @Input() allowNew = false; // if true, will allow new values (not in options) to be selected\n  @Input() limitResults = false; // constrain the number of results that are rendered into the option box\n  @Input() searchFunc: SearchFunc; // if set this function will be used to search options instead of matching optionText\n\n  inputControl = new FormControl('');\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  deselectOption(option: any): void {\n    const index = this.selected.indexOf(option);\n    if (index > -1) {\n      this.selected.splice(index, 1);\n      this.selection.emit(this.selected);\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  optionSelected(event: any): void {\n    // don't allow selection of duplicate items (we can potentially make this an option later)\n    if (this.selected.indexOf(event.option.value) === -1) {\n      this.selected.push(event.option.value);\n      this.selection.emit(this.selected);\n    }\n    this.inputControl.setValue('');\n  }\n\n  optionText(option: any): string {\n    return this.displayProperty ? option[this.displayProperty] : option;\n  }\n\n  optionTextPostMatch(option: any): string {\n    // returns the portion of the optionText after a matching search term\n    if (!this.inputControl.value) {\n      return '';\n    }\n    const optionText = this.optionText(option);\n    const index = optionText.toLowerCase().indexOf(this.inputControl.value.toLowerCase());\n    return optionText.slice(index + this.inputControl.value.length);\n  }\n\n  optionTextMatch(option: any): string {\n    // returns the portion of the optionText matching the search term\n    if (!this.inputControl.value) {\n      return '';\n    }\n    const optionText = this.optionText(option);\n    const index = optionText.toLowerCase().indexOf(this.inputControl.value.toLowerCase());\n    return optionText.slice(index, index + this.inputControl.value.length);\n  }\n\n  optionTextPreMatch(option: any): string {\n    // returns the portion of the optionText before a matching search term\n    const optionText = this.optionText(option);\n    if (!this.inputControl.value) {\n      return optionText;\n    }\n    const index = optionText.toLowerCase().indexOf(this.inputControl.value.toLowerCase());\n    return optionText.slice(0, index);\n  }\n\n  get filteredOptions(): any[] {\n    let displayedOptions: MultiSelectOption[];\n    const options = this.options.filter((option) => !this.selected.find((selected) => selected === option));\n\n    if (this.inputControl.value) {\n      let filteredOptions: MultiSelectOption[];\n      if (this.searchFunc) {\n        filteredOptions = this.options.filter((option) => this.searchFunc(this.inputControl.value || '', option));\n      } else {\n        filteredOptions = this.options.filter(\n          (option) =>\n            this.optionText(option)\n              .toLowerCase()\n              .indexOf((this.inputControl.value || '').toLowerCase()) !== -1,\n        );\n      }\n      if (this.allowNew) {\n        if (\n          filteredOptions\n            .map((option) => this.optionText(option).toLowerCase())\n            .indexOf(this.inputControl.value.toLowerCase()) === -1\n        ) {\n          // no exact match term found, so add a new one to the options\n          filteredOptions.unshift(this.buildOption(this.inputControl.value));\n        }\n      }\n      displayedOptions = filteredOptions;\n    } else {\n      displayedOptions = options;\n    }\n\n    if (this.limitResults) {\n      displayedOptions = displayedOptions.slice(0, 50);\n    }\n\n    return displayedOptions;\n  }\n\n  private buildOption(name: string): any {\n    // if using displayProperty, return an object containing just that, otherwise just the string itself\n    if (this.displayProperty) {\n      const option = {};\n      option[this.displayProperty] = name;\n      return option;\n    }\n    return name;\n  }\n}\n","\n  {{ placeholderText }}\n  \n    \n      {{ optionText(option) }}\n      cancel\n    \n    \n  \n  \n    \n      \n    \n  \n\n\n\n  {{ optionText(option) }}\n\n\n\n  {{ optionTextPreMatch(option) }}\n  {{ optionTextMatch(option) }}\n  {{ optionTextPostMatch(option) }}\n\n","import { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { VaMultiSelectComponent } from './va-multi-select.component';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatIconModule,\n    GalaxyWrapModule,\n    MatSelectModule,\n    MatInputModule,\n    GalaxyFormFieldModule,\n    FormsModule,\n    MatAutocompleteModule,\n    ReactiveFormsModule,\n    MatChipsModule,\n  ],\n  declarations: [VaMultiSelectComponent],\n  exports: [VaMultiSelectComponent],\n})\nexport class VaMultiSelectModule {}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router, Params, NavigationEnd } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class URLParamService {\n  appliedParams: Params = {};\n\n  constructor(private router: Router, private route: ActivatedRoute, private location: Location) {\n    this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n      this.applyParams(this.appliedParams);\n    });\n  }\n\n  applyParams(newParams: Params): void {\n    const params = Object.assign({}, this.route.snapshot.queryParams, this.appliedParams, newParams);\n    this.appliedParams = Object.assign(this.appliedParams, newParams);\n    this.location.replaceState(window.location.pathname, this.serialize(params));\n  }\n\n  removeParams(oldParams: string[]): void {\n    const currentParams = Object.assign({}, this.route.snapshot.queryParams, this.appliedParams);\n    oldParams.forEach((param) => {\n      if (this.appliedParams[param]) {\n        delete this.appliedParams[param];\n      }\n      if (currentParams[param]) {\n        delete currentParams[param];\n      }\n    });\n    this.location.replaceState(window.location.pathname, this.serialize(currentParams));\n  }\n\n  serialize(obj: object) {\n    const params = Object.keys(obj);\n    if (params.length === 0) {\n      return '';\n    }\n    return (\n      '?' +\n      params\n        .reduce(function (a: string[], k: string) {\n          a.push(k + '=' + encodeURIComponent(obj[k]));\n          return a;\n        }, [])\n        .join('&')\n    );\n  }\n  /* tslint:enable */\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Filters, FilterField } from './filters/filter';\nimport { ActivatedRoute } from '@angular/router';\nimport { Observable, BehaviorSubject, Subscription } from 'rxjs';\nimport { filter, skipWhile, map } from 'rxjs/operators';\nimport { URLParamService } from '../url-param.service';\nimport { LocalStorageService } from '../local-storage.service';\n\nexport interface SavedFilter {\n  name: string;\n  serializedFields: string | null;\n  expiry: number | null;\n}\nconst LAST_APPLIED_FIELDS = '__last_applied_fields__';\nconst EXPIRY_LAST_APPLIED_FIELDS = 30 * 60 * 1000; // 30 min expiry time for last applied fields\n\n@Injectable()\nexport class FilterService implements OnDestroy {\n  public filters: Filters;\n  /*\n    What: lazyLoadedFields are a mechanism for the consumer of the service to tell the filter service that these\n    filter fields may not immediately have their `option` values. In knowing this, the filter service can subscribe\n    to those fields changing options, and once the options have all been filled, apply the filter values\n    Why: Since many of our filter fields can take a list of `any` type of object, we need to serialize those\n    objects into a much more consistent and concise representation in the url/storage. Upon deserializing these\n    values, we need to check to see they are still valid, and map back to an original object, based on the filter field options.\n    Since many fields do not have their options loaded when this service is instantiated, we can keep this list\n    of fields, and wait for their options to load before we deserialize the url/storage values.\n    */\n  public lazyLoadedFields: FilterField[] = [];\n  private initializationParams: any = {};\n  private fieldSubscription: Subscription;\n  private lazyFieldSubscription: Subscription;\n  private _savedFilters = new BehaviorSubject(null);\n  /*\n    What: batchChangedFields is a local list of fields that the service is currently updating. Once complete, the service will\n    emit a new list of values through the fieldValueChanges observable, and this value will be flushed.\n    Why:  When changing several fields at once, we don't want to trigger the consumer (a component using the service)\n    to make an ajax request for each changed field. By batching value changes, and emiting them all at once, we can allow\n    the consumer to intelligently cascade many updates at a time to the data it is filtering.\n    */\n  private batchChangedFields: FilterField[] = [];\n  private _fieldValueChanges = new BehaviorSubject[] | null>(null);\n\n  constructor(\n    private route: ActivatedRoute,\n    private paramService: URLParamService,\n    private localStorageService: LocalStorageService,\n  ) {}\n\n  public setFilters(allFilters: Filters, lazyLoadedFields?: FilterField[], disableSavedFilters?: boolean): void {\n    this.filters = allFilters;\n    if (!this.filters) {\n      return;\n    }\n    this.fieldSubscription = this.filters.fieldValuesObservable.subscribe((field: FilterField) => {\n      this.updateUrl();\n      this.saveCurrentFilter(LAST_APPLIED_FIELDS, Date.now() + EXPIRY_LAST_APPLIED_FIELDS);\n      if (!this.isFieldIncludedInBatch(field)) {\n        this._fieldValueChanges.next([field]);\n      }\n    });\n    if (lazyLoadedFields) {\n      this.setLazyLoadedFields(lazyLoadedFields);\n    }\n\n    const params = this.getFilterValuesFromUrl(this.filters);\n\n    const existingSavedFilters = this.localStorageService.get(this.filters.id);\n    if (existingSavedFilters && !disableSavedFilters) {\n      const savedFilters = JSON.parse(existingSavedFilters);\n      this._savedFilters.next(savedFilters);\n    }\n\n    this.initializationParams = params || JSON.parse(this.lastAppliedFields.serializedFields!) || null;\n    if (this.initializationParams) {\n      this.updateFilterFields(this.filters.fields, this.initializationParams);\n    }\n\n    this.updateUrl();\n  }\n\n  public setLazyLoadedFields(lazyLoadedFields: FilterField[]): void {\n    this.lazyLoadedFields = lazyLoadedFields;\n    this.lazyFieldSubscription = this.filters.fieldOptionsObservable\n      .pipe(filter((field) => this.lazyLoadedFields.some((lazyField) => lazyField === field)))\n      .subscribe((field) => this.trackLazyLoadedFieldOptionChanges(field, this.lazyLoadedFields));\n  }\n\n  public get savedFilters(): Observable {\n    return this._savedFilters.asObservable().pipe(\n      skipWhile((value: any) => value === null),\n      map((savedFilters: SavedFilter[]) => {\n        return savedFilters.filter((savedFilter: SavedFilter) => savedFilter.name !== LAST_APPLIED_FIELDS);\n      }),\n    );\n  }\n\n  public get fieldValueChanges(): Observable[] | null> {\n    return this._fieldValueChanges.asObservable().pipe(skipWhile((value) => value === null));\n  }\n\n  public saveCurrentFilter(name: string, expiry: number | null = null): boolean {\n    if (!name) {\n      return false;\n    }\n    const currentlyAppliedFields = this.serializeFilters();\n    const savedFilters = this._savedFilters.getValue() || [];\n    const existingSavedFilterIndex = savedFilters.findIndex((savedFilter) => savedFilter.name === name);\n    if (existingSavedFilterIndex !== -1) {\n      savedFilters[existingSavedFilterIndex] = {\n        name: name,\n        serializedFields: currentlyAppliedFields,\n        expiry: expiry,\n      };\n    } else {\n      savedFilters.push({\n        name: name,\n        serializedFields: currentlyAppliedFields,\n        expiry: expiry,\n      });\n    }\n    const success = this.localStorageService.set(this.filters.id, JSON.stringify(savedFilters));\n    if (success) {\n      this._savedFilters.next(savedFilters);\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  public removeSavedFilter(name: string): boolean {\n    const savedFilters = this._savedFilters.getValue() || [];\n    const existingSavedFilterIndex = savedFilters.findIndex((savedFilter) => savedFilter.name === name);\n    if (existingSavedFilterIndex !== -1) {\n      savedFilters.splice(existingSavedFilterIndex, 1);\n      const success = this.localStorageService.set(this.filters.id, JSON.stringify(savedFilters));\n      if (success) {\n        this._savedFilters.next(savedFilters);\n        return true;\n      } else {\n        return false;\n      }\n    } else {\n      return false;\n    }\n  }\n\n  public applySavedFilter(savedFilter: SavedFilter): void {\n    const paramValues = JSON.parse(savedFilter.serializedFields!);\n    this.updateFilterFields(this.filters.fields, paramValues);\n  }\n\n  public getFilterValuesFromUrl(filters: Filters): any {\n    const params = this.route.snapshot.queryParams;\n    if (!params[filters.id]) {\n      return null;\n    }\n    return JSON.parse(decodeURIComponent(params[filters.id]));\n  }\n\n  public updateUrl(): void {\n    const serializedFilters = this.serializeFilters();\n    if (serializedFilters !== '{}') {\n      const filterParam = {};\n      filterParam[this.filters.id] = serializedFilters;\n      this.paramService.applyParams(filterParam);\n    } else {\n      this.paramService.removeParams([this.filters.id]);\n    }\n  }\n\n  private isFieldIncludedInBatch(field: FilterField): boolean {\n    return this.batchChangedFields.some((changedField) => changedField === field);\n  }\n\n  private get lastAppliedFields(): SavedFilter {\n    const savedFilters = this._savedFilters.getValue() || [];\n    let lastAppliedFields: SavedFilter | undefined | null = savedFilters.find(\n      (savedFilter) => savedFilter.name === LAST_APPLIED_FIELDS,\n    );\n    if (lastAppliedFields && lastAppliedFields.expiry && lastAppliedFields.expiry < Date.now()) {\n      this.removeSavedFilter(LAST_APPLIED_FIELDS);\n      lastAppliedFields = null;\n    }\n    const emptyFilterSelection: SavedFilter = { name: LAST_APPLIED_FIELDS, serializedFields: null, expiry: null };\n    return lastAppliedFields || emptyFilterSelection;\n  }\n\n  private trackLazyLoadedFieldOptionChanges(field: FilterField, lazyLoadedFields: FilterField[]): void {\n    const indexOfField = lazyLoadedFields.findIndex((f) => f === field);\n    lazyLoadedFields.splice(indexOfField, 1);\n    if (lazyLoadedFields.length === 0 && this.initializationParams) {\n      const fieldsToUpdate = this.filters.fields.filter((f) => this.initializationParams[f.id]);\n      this.updateFilterFields(fieldsToUpdate, this.initializationParams);\n      this.initializationParams = null;\n    }\n  }\n\n  private serializeFilters(): any {\n    return JSON.stringify(this.serializeAllActiveFields());\n  }\n\n  private serializeAllActiveFields(): object {\n    return this.filters.activeFields.reduce((previous, current) => {\n      previous[current.id] = current.serializeValue();\n      return previous;\n    }, {});\n  }\n\n  private updateFilterFields(fieldsToUpdate: FilterField[], paramValues: any): void {\n    fieldsToUpdate.forEach((field, index, fieldArray) => {\n      const key = field.id;\n      // If no paramValue present for field, clear the value\n      const newValue = paramValues[key] ? field.deserializeValue(paramValues[key]) : null;\n      const publishChanges = index === fieldArray.length - 1;\n      this.updateFilterField(field, newValue, publishChanges);\n    });\n  }\n\n  private updateFilterField(field: FilterField, newValue: any, publishChanges: boolean): void {\n    this.batchChangedFields.push(field);\n    if (newValue === null) {\n      field.clearValue();\n    } else if (field.value !== newValue) {\n      field.changeValue(newValue);\n    }\n    if (publishChanges) {\n      this._fieldValueChanges.next(this.batchChangedFields);\n      this.batchChangedFields = [];\n    }\n  }\n\n  public exportFilterString(): string {\n    return this.serializeFilters();\n  }\n\n  public importFilterFields(importString: string): void {\n    const paramValues = JSON.parse(importString);\n    this.updateFilterFields(this.filters.fields, paramValues);\n  }\n\n  ngOnDestroy(): void {\n    if (this.filters) {\n      this.paramService.removeParams([this.filters.id]);\n    }\n    if (this.fieldSubscription) {\n      this.fieldSubscription.unsubscribe();\n    }\n    if (this.lazyFieldSubscription) {\n      this.lazyFieldSubscription.unsubscribe();\n    }\n  }\n}\n","import { LayoutModule } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterModule } from '@angular/router';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\nimport { VaSearchBoxModule } from '../search-box/va-search-box.module';\nimport { VaItemsAndStatusModule } from '../va-items-and-status/va-items-and-status.module';\nimport { VaMultiSelectModule } from '../va-multi-select/va-multi-select.module';\nimport { VaSearchSelectModule } from '../va-search-select/va-search-select.module';\nimport { AppliedFiltersBarComponent } from './applied-filters-bar.component';\nimport { ExportFilterDialogComponent } from './export-filter-dialog.component';\nimport { FilterContainerComponent } from './filter-container.component';\nimport { FilterComponent } from './filter.component';\nimport { CheckboxFilterFieldComponent } from './filters/checkbox/filter-field-checkbox.component';\nimport { DatePickerFilterFieldComponent } from './filters/date-picker/filter-field-date-picker.component';\nimport { FilterFieldComponent } from './filters/filter-field.component';\nimport { FilterFieldDirective } from './filters/filter.directive';\nimport { ItemsAndStatusFilterFieldComponent } from './filters/items-and-status/filter-field-items-and-status.component';\nimport { MultiItemsAndStatusFilterFieldComponent } from './filters/multi-items-and-status/filter-field-multi-items-and-status.component';\nimport { MultiSelectFilterFieldComponent } from './filters/multi-select/filter-field-multi-select.component';\nimport { RadioFilterFieldComponent } from './filters/radio/filter-field-radio.component';\nimport { RangeFilterFieldComponent } from './filters/range/filter-field-range.component';\nimport { SearchSelectFilterFieldComponent } from './filters/search-select/filter-field-search-select.component';\nimport { TabbedFilterFieldComponent } from './filters/tabbed/filter-field-tabbed.component';\nimport { TextFilterFieldComponent } from './filters/text/filter-field-text.component';\nimport { ImportFilterDialogComponent } from './import-filter-dialog.component';\nimport { ManageSavedFiltersDialogComponent } from './manage-saved-filters-dialog.component';\nimport { SaveAppliedFiltersDialogComponent } from './save-applied-filters-dialog.component';\nimport { SavedFiltersMenuComponent } from './saved-filters-menu.component';\n\n@NgModule({\n  imports: [\n    RouterModule,\n    CommonModule,\n    VaSearchBoxModule,\n    VaSearchSelectModule,\n    VaItemsAndStatusModule,\n    VaMultiSelectModule,\n    MatCheckboxModule,\n    MatTabsModule,\n    MatMenuModule,\n    MatIconModule,\n    MatRadioModule,\n    MatButtonModule,\n    MatInputModule,\n    MatDialogModule,\n    MatListModule,\n    MatDatepickerModule,\n    FormsModule,\n    ReactiveFormsModule,\n    TranslateModule,\n    LexiconModule.forChild({\n      componentName: WEBLATE_COMPONENT_NAME,\n      baseTranslation: baseTranslation,\n    }),\n    MatMomentDateModule,\n    LayoutModule,\n    MatTooltipModule,\n    GalaxyWrapModule,\n    MatChipsModule,\n  ],\n  declarations: [\n    FilterComponent,\n    FilterFieldDirective,\n    FilterContainerComponent,\n    FilterFieldComponent,\n    AppliedFiltersBarComponent,\n    CheckboxFilterFieldComponent,\n    DatePickerFilterFieldComponent,\n    SearchSelectFilterFieldComponent,\n    ItemsAndStatusFilterFieldComponent,\n    MultiItemsAndStatusFilterFieldComponent,\n    MultiSelectFilterFieldComponent,\n    TextFilterFieldComponent,\n    TabbedFilterFieldComponent,\n    RadioFilterFieldComponent,\n    SaveAppliedFiltersDialogComponent,\n    ManageSavedFiltersDialogComponent,\n    SavedFiltersMenuComponent,\n    RangeFilterFieldComponent,\n    ExportFilterDialogComponent,\n    ImportFilterDialogComponent,\n  ],\n  exports: [\n    FilterComponent,\n    FilterContainerComponent,\n    AppliedFiltersBarComponent,\n    SavedFiltersMenuComponent,\n    FilterFieldDirective,\n    ExportFilterDialogComponent,\n    ImportFilterDialogComponent,\n  ],\n  providers: [],\n})\nexport class VaFilterModule {}\n","import { NgModule } from '@angular/core';\nimport { VaIconModule } from '../va-icon/icon.module';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\nimport { VaActionMenuModule } from '../va-action-menu/va-action-menu.module';\nimport { VaListComponent } from './va-list.component';\nimport { VaListItemComponent } from './list-item/va-list-item.component';\nimport { ExpandedViewDirective } from './list-item/expanded-view.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatCheckboxModule,\n    MatButtonModule,\n    MatIconModule,\n    MatSlideToggleModule,\n    MatTooltipModule,\n    MatProgressSpinnerModule,\n    MatProgressBarModule,\n    MatChipsModule,\n    VaIconModule,\n    VaActionMenuModule,\n  ],\n  declarations: [ExpandedViewDirective, VaListComponent, VaListItemComponent],\n  exports: [VaListComponent, ExpandedViewDirective],\n})\nexport class VaListModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VaNavItemListComponent } from './nav-item-list.component';\n\n@NgModule({\n  imports: [CommonModule, MatButtonModule, MatIconModule],\n  declarations: [VaNavItemListComponent],\n  exports: [VaNavItemListComponent],\n})\nexport class VaNavItemListModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VaNavItemComponent } from './nav-item.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n  imports: [CommonModule, MatButtonModule, MatIconModule, RouterModule],\n  declarations: [VaNavItemComponent],\n  exports: [VaNavItemComponent],\n})\nexport class VaNavItemModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { VaNavComponent } from './nav.component';\n\n@NgModule({\n  imports: [CommonModule, MatSidenavModule, MatButtonModule, MatToolbarModule, MatIconModule],\n  declarations: [VaNavComponent],\n  exports: [VaNavComponent],\n})\nexport class VaNavModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport {\n  VaNestedSelectorComponent,\n  VaNestedSelectorTitleComponent,\n  VaNestedSelectorNestComponent,\n  VaNestedSelectorNestItemComponent,\n  VaHideDirective,\n} from './nested-selector';\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [\n    VaNestedSelectorComponent,\n    VaNestedSelectorTitleComponent,\n    VaNestedSelectorNestComponent,\n    VaNestedSelectorNestItemComponent,\n    VaHideDirective,\n  ],\n  declarations: [\n    VaNestedSelectorComponent,\n    VaNestedSelectorTitleComponent,\n    VaNestedSelectorNestComponent,\n    VaNestedSelectorNestItemComponent,\n    VaHideDirective,\n  ],\n})\nexport class VaNestedSelectorModule {}\n","import { Injectable } from '@angular/core';\nimport { Filters } from '../va-filter/filters/filter';\nimport { Breadcrumbs } from '../va-breadcrumbs/va-breadcrumbs';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { BehaviorSubject, Subject, Observable } from 'rxjs';\nimport { map, filter, shareReplay } from 'rxjs/operators';\nimport { VaProductNavBadges } from './va-product-badges';\nimport { ActionButton } from './action-button';\nimport { VaProductNavItem } from './va-product-nav-item';\nimport { PageInformation } from './page-information';\n\n@Injectable()\nexport class VaProductNavService {\n  private filters$$ = new BehaviorSubject(null);\n  private infoSidebar$$ = new BehaviorSubject(null);\n  private primaryActionButton$$ = new BehaviorSubject(null);\n  private secondaryActionButton$$ = new BehaviorSubject(null);\n  private breadcrumbs$$: BehaviorSubject = new BehaviorSubject([]);\n  private navBadges$$: BehaviorSubject = new BehaviorSubject({});\n  private search$$ = new BehaviorSubject(null);\n  private showInfoIcon$$: BehaviorSubject = new BehaviorSubject(false);\n  private _navItems: VaProductNavItem[];\n  private scroll$$ = new BehaviorSubject(null);\n  private toggleNav$$: Subject = new Subject();\n\n  constructor(private router: Router) {}\n\n  isSelected(navItem: VaProductNavItem, isChild: boolean): boolean {\n    if (navItem.children && navItem.children.length > 0) {\n      navItem.children.forEach((child) => (child.selected = this.isSelected(child, true)));\n      return navItem.children.find((ch) => ch.selected) != null;\n    } else {\n      return this.router.isActive(navItem.url, isChild);\n    }\n  }\n\n  setNavItems(navItems: VaProductNavItem[]): void {\n    this._navItems = navItems;\n    this.navItems.map((item) => {\n      item.selected = this.isSelected(item, false);\n      return item;\n    });\n    this.router.events\n      .pipe(\n        filter((event) => event instanceof NavigationEnd),\n        map(() =>\n          this.navItems.map((item) => {\n            item.selected = this.isSelected(item, false);\n          }),\n        ),\n      )\n      .subscribe();\n  }\n\n  setFilters(filters: Filters | null): void {\n    this.filters$$.next(filters);\n  }\n\n  setInfoSidebar(pageInfo: PageInformation | PageInformation[] | null): void {\n    if (pageInfo === null) {\n      pageInfo = [];\n    } else if (!Array.isArray(pageInfo)) {\n      pageInfo = [pageInfo];\n    }\n    this.infoSidebar$$.next(pageInfo);\n  }\n\n  setPrimaryActionButton(actionButton: ActionButton | null): void {\n    this.primaryActionButton$$.next(actionButton);\n  }\n\n  setSecondaryActionButton(actionButton: ActionButton | null): void {\n    this.secondaryActionButton$$.next(actionButton);\n  }\n\n  setBreadcrumbs(breadcrumbs: Breadcrumbs[]): void {\n    this.breadcrumbs$$.next(breadcrumbs);\n  }\n\n  setNavBadges(navBadges: VaProductNavBadges): void {\n    this.navBadges$$.next(navBadges);\n  }\n\n  setSearch(search: string | null): void {\n    this.search$$.next(search);\n  }\n\n  setShowInfoIcon(flag: boolean): void {\n    this.showInfoIcon$$.next(flag);\n  }\n\n  setScroll(scrollEvent: Event): void {\n    this.scroll$$.next(scrollEvent);\n  }\n\n  toggleNav(): void {\n    this.toggleNav$$.next(null);\n  }\n\n  get navItems(): VaProductNavItem[] {\n    return this._navItems;\n  }\n\n  get breadcrumbs$(): Observable {\n    return this.breadcrumbs$$.asObservable();\n  }\n\n  get primaryActionButton$(): Observable {\n    return this.primaryActionButton$$.asObservable();\n  }\n\n  get secondaryActionButton$(): Observable {\n    return this.secondaryActionButton$$.asObservable();\n  }\n\n  get infoSidebar$(): Observable {\n    return this.infoSidebar$$.asObservable();\n  }\n\n  get filters$(): Observable {\n    return this.filters$$.asObservable();\n  }\n\n  get navBadges$(): Observable {\n    return this.navBadges$$.asObservable();\n  }\n\n  get search$(): Observable {\n    return this.search$$.asObservable();\n  }\n\n  get showInfoIcon$(): Observable {\n    return this.showInfoIcon$$.asObservable();\n  }\n\n  get scroll$(): Observable {\n    return this.scroll$$.asObservable().pipe(shareReplay(1));\n  }\n\n  get toggleNav$(): Observable {\n    return this.toggleNav$$.pipe(map((value) => value));\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { LayoutModule } from '@angular/cdk/layout';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { VaBreadcrumbsModule } from '../va-breadcrumbs/va-breadcrumbs.module';\nimport { VaFilterModule } from '../va-filter/filter.module';\nimport { VaProductNavItemComponent } from './va-product-nav-item.component';\nimport { VaProductNavComponent, VaNavCustomSideContentDirective } from './va-product-nav.component';\nimport { MobileActionBarComponent } from './mobile-action-bar.component';\nimport { VaProductNavService } from './va-product-nav.service';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\nimport { AtlasModule } from '@galaxy/atlas';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\n\nconst materialModules = [\n  MatToolbarModule,\n  MatIconModule,\n  MatSidenavModule,\n  MatButtonModule,\n  MatMenuModule,\n  MatRadioModule,\n  MatBadgeModule,\n  MatInputModule,\n  MatChipsModule,\n];\n\n@NgModule({\n  declarations: [\n    VaProductNavComponent,\n    VaProductNavItemComponent,\n    VaNavCustomSideContentDirective,\n    MobileActionBarComponent,\n  ],\n  imports: [\n    RouterModule,\n    CommonModule,\n    FormsModule,\n    LayoutModule,\n    VaBreadcrumbsModule,\n    VaFilterModule,\n    TranslateModule,\n    LexiconModule.forChild({\n      componentName: WEBLATE_COMPONENT_NAME,\n      baseTranslation: baseTranslation,\n    }),\n    materialModules,\n    AtlasModule,\n    GalaxyBadgeModule,\n  ],\n  exports: [VaProductNavComponent, VaProductNavItemComponent, VaNavCustomSideContentDirective],\n  providers: [],\n})\nexport class VaProductNavModule {\n  static forRoot(): ModuleWithProviders {\n    return {\n      ngModule: VaProductNavModule,\n      providers: [VaProductNavService],\n    };\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VaStatusBannerComponent } from './va-status-banner.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  declarations: [VaStatusBannerComponent],\n  imports: [CommonModule, MatIconModule],\n  exports: [VaStatusBannerComponent],\n})\nexport class VaStatusBannerModule {}\n","import { NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CommonModule } from '@angular/common';\n\nimport { CardStencilComponent } from './card-stencil.component';\nimport { CardListStencilComponent } from './card-list-stencil.component';\nimport { SearchBarStencilComponent } from './search-bar-stencil.component';\nimport { ListStencilComponent } from './list-stencil.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatCardModule,\n    MatIconModule,\n    MatInputModule,\n    MatSelectModule,\n    MatExpansionModule,\n    MatCheckboxModule,\n  ],\n  declarations: [CardStencilComponent, CardListStencilComponent, SearchBarStencilComponent, ListStencilComponent],\n  exports: [CardStencilComponent, CardListStencilComponent, SearchBarStencilComponent, ListStencilComponent],\n})\nexport class VaStencilsModule {}\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { VaIconModule } from '../../va-icon/icon.module';\nimport { VaButtonComponent } from './va-button.component';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    RouterModule,\n    VaIconModule,\n    MatIconModule,\n    MatTooltipModule,\n    MatButtonModule,\n    GalaxyTooltipModule,\n  ],\n  declarations: [VaButtonComponent],\n  exports: [VaButtonComponent],\n})\nexport class VaButtonModule {}\n","import { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { NgModule } from '@angular/core';\nimport { VaCheckboxComponent } from './va-checkbox.component';\n\n@NgModule({\n  imports: [CommonModule, MatCheckboxModule],\n  declarations: [VaCheckboxComponent],\n  exports: [VaCheckboxComponent],\n})\nexport class VaCheckboxModule {}\n","import { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { NgModule } from '@angular/core';\nimport { VaChipComponent } from './va-chip.component';\n\n@NgModule({\n  imports: [CommonModule, MatChipsModule],\n  declarations: [VaChipComponent],\n  exports: [VaChipComponent],\n})\nexport class VaChipModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { VaExpandDirective } from './va-expand.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [VaExpandDirective],\n  exports: [VaExpandDirective],\n})\nexport class VaExpandModule {}\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { VaIconModule } from '../../va-icon/icon.module';\nimport { VaMenuComponent } from './va-menu.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    RouterModule,\n    VaIconModule,\n    MatIconModule,\n    MatMenuModule,\n    MatButtonModule,\n    MatIconModule,\n    GalaxyTooltipModule,\n  ],\n  declarations: [VaMenuComponent],\n  exports: [VaMenuComponent],\n})\nexport class VaMenuModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { VaMultilineComponent } from './va-multiline.component';\n\n@NgModule({\n  imports: [CommonModule, RouterModule],\n  declarations: [VaMultilineComponent],\n  exports: [VaMultilineComponent],\n})\nexport class VaMultilineModule {}\n","import { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { VaSwitchComponent } from './va-switch.component';\n\n@NgModule({\n  imports: [CommonModule, MatSlideToggleModule],\n  declarations: [VaSwitchComponent],\n  exports: [VaSwitchComponent],\n})\nexport class VaSwitchModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { VaButtonModule } from '../wrappers/va-button/va-button.module';\nimport { VaCheckboxModule } from '../wrappers/va-checkbox/va-checkbox.module';\nimport { VaChipModule } from '../wrappers/va-chip/va-chip.module';\nimport { VaExpandModule } from '../wrappers/va-expand/va-expand.module';\nimport { VaMenuModule } from '../wrappers/va-menu/va-menu.module';\nimport { VaMultilineModule } from '../wrappers/va-multiline/va-multiline.module';\nimport { VaSwitchModule } from '../wrappers/va-switch/va-switch.module';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CellDirective } from './cells/cell.directive';\nimport { ColumnSelectorComponent } from './column-selector.component';\nimport { TableComponent } from './table.component';\nimport {\n  AsObjectCellPipe,\n  AsTextCellPipe,\n  GetMaxWidthPipe,\n  GetMinWidthPipe,\n  GetSortingIndicatorClassPipe,\n  IsSortedPropertyPipe,\n  RowStatusCssPipe,\n  TextDirectionPipe,\n} from './table.pipe';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatButtonModule,\n    MatIconModule,\n    MatProgressSpinnerModule,\n    MatCheckboxModule,\n    MatListModule,\n    MatCardModule,\n    VaButtonModule,\n    VaCheckboxModule,\n    VaExpandModule,\n    VaMultilineModule,\n    VaSwitchModule,\n    VaMenuModule,\n    VaChipModule,\n    TranslateModule,\n  ],\n  declarations: [\n    TableComponent,\n    ColumnSelectorComponent,\n    CellDirective,\n    GetSortingIndicatorClassPipe,\n    AsTextCellPipe,\n    AsObjectCellPipe,\n    GetMinWidthPipe,\n    GetMaxWidthPipe,\n    RowStatusCssPipe,\n    TextDirectionPipe,\n    IsSortedPropertyPipe,\n  ],\n  exports: [TableComponent, ColumnSelectorComponent],\n})\nexport class VaTableModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\nimport { UpgradeCTADialogModule } from '../get-pro-dialog/get-pro-dialog.module';\nimport { WelcomeComponent, WelcomeCustomActionDirective } from './welcome.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    TranslateModule,\n    LexiconModule.forChild({\n      componentName: WEBLATE_COMPONENT_NAME,\n      baseTranslation: baseTranslation,\n    }),\n    MatButtonModule,\n    MatIconModule,\n    MatTabsModule,\n    MatRadioModule,\n    MatRippleModule,\n    MatDialogModule,\n    MatProgressSpinnerModule,\n    UpgradeCTADialogModule,\n  ],\n  providers: [\n    { provide: MatDialogRef, useValue: {} },\n    { provide: MAT_DIALOG_DATA, useValue: [] },\n  ],\n  declarations: [WelcomeComponent, WelcomeCustomActionDirective],\n  exports: [WelcomeComponent, WelcomeCustomActionDirective],\n})\nexport class WelcomeModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CommonPipesModule } from './common-pipes/common-pipes.module';\nimport { UpgradeCTADialogModule } from './get-pro-dialog/get-pro-dialog.module';\nimport { VaGoalTableModule } from './goal-table/goal-table.module';\nimport { ProjectMilestonesModule } from './project-milestones/project-milestones.module';\nimport { VaSafeHtmlModule } from './safe-html/safe-html.module';\nimport { VaSearchBoxModule } from './search-box/va-search-box.module';\nimport { VaActionMenuModule } from './va-action-menu/va-action-menu.module';\nimport { VaBadgeModule } from './va-badge/va-badge.module';\nimport { VaBreadcrumbsModule } from './va-breadcrumbs/va-breadcrumbs.module';\nimport { VaCardsModule } from './va-cards/va-cards.module';\nimport { VaFilterChipsModule } from './va-filter-chips/va-filter-chips.module';\nimport { VaFilterModule } from './va-filter/filter.module';\nimport { VaIconModule } from './va-icon/icon.module';\nimport { VaImageGalleryComponent } from './va-image-gallery';\nimport { VaItemsAndStatusModule } from './va-items-and-status/va-items-and-status.module';\nimport { VaListModule } from './va-list/va-list.module';\nimport { VaMaterialTableModule } from './va-mat-table/va-mat-table.module';\nimport { VaMultiSelectModule } from './va-multi-select/va-multi-select.module';\nimport { VaNavItemListModule } from './va-nav/nav-item-list/nav-item-list.module';\nimport { VaNavItemModule } from './va-nav/nav-item/nav-item.module';\nimport { VaNavModule } from './va-nav/nav.module';\nimport { VaNestedSelectorModule } from './va-nested-selector/va-nested-selector.module';\nimport { VaProductNavModule } from './va-product-nav/va-product-nav.module';\nimport { VaSearchSelectModule } from './va-search-select/va-search-select.module';\nimport { VaStatusBannerModule } from './va-status-banner/va-status-banner.module';\nimport { VaStencilsModule } from './va-stencils/stencils.module';\nimport { VaTableModule } from './va-table/table.module';\nimport { WelcomeModule } from './va-welcome/welcome.module';\nimport { VaButtonModule } from './wrappers/va-button/va-button.module';\nimport { VaCheckboxModule } from './wrappers/va-checkbox/va-checkbox.module';\nimport { VaChipModule } from './wrappers/va-chip/va-chip.module';\nimport { VaExpandModule } from './wrappers/va-expand/va-expand.module';\nimport { VaMenuModule } from './wrappers/va-menu/va-menu.module';\nimport { VaMultilineModule } from './wrappers/va-multiline/va-multiline.module';\nimport { VaSwitchModule } from './wrappers/va-switch/va-switch.module';\n\nconst UIKIT_MODULES = [\n  VaCardsModule,\n  CommonModule,\n  VaSearchBoxModule,\n  VaIconModule,\n  VaTableModule,\n  VaButtonModule,\n  VaCheckboxModule,\n  VaMenuModule,\n  VaExpandModule,\n  VaSwitchModule,\n  VaMultilineModule,\n  VaFilterModule,\n  VaItemsAndStatusModule,\n  VaMultiSelectModule,\n  VaSearchSelectModule,\n  VaChipModule,\n  VaSafeHtmlModule,\n  VaImageGalleryComponent,\n  VaListModule,\n  VaActionMenuModule,\n  VaNestedSelectorModule,\n  VaBreadcrumbsModule,\n  VaNavModule,\n  VaNavItemModule,\n  VaNavItemListModule,\n  VaProductNavModule,\n  VaStencilsModule,\n  CommonPipesModule,\n  VaBadgeModule,\n  UpgradeCTADialogModule,\n  WelcomeModule,\n  VaMaterialTableModule,\n  VaFilterChipsModule,\n  VaStatusBannerModule,\n  ProjectMilestonesModule,\n  VaGoalTableModule,\n];\n\n@NgModule({\n  imports: UIKIT_MODULES,\n  exports: UIKIT_MODULES,\n})\nexport class UIKitModule {}\n"],"mappings":"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BAPb,CACT,CAAEC,QAASC,GAAcC,SAAU,CAAA,CAAE,EACrC,CAAEF,QAASG,GAAiBD,SAAU,CAAA,CAAE,CAAE,EAC3CE,QAAA,CAlBCC,EACAC,EACAC,EAAcC,SAAS,CACrBC,cAAeC,EACfC,gBAAiBA,EAClB,EACDC,EACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAsB,CAAA,CAAA,EASpB,IAAOpB,EAAPqB,SAAOrB,CAAa,GAAA,EC0C1B,IAAasB,IAAW,IAAA,CAAlB,IAAOA,EAAP,MAAOA,CAAW,yCAAXA,EAAW,sBAAXA,CAAW,CAAA,0BA1CtBC,GACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAnCAlC,GACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAiB,CAAA,CAAA,EAOb,IAAOnC,EAAPoC,SAAOpC,CAAW,GAAA","names":["ɵɵelement","ɵɵproperty","ctx_r0","iconUrl","ɵɵsanitizeUrl","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵstyleProp","fontColor","ɵɵadvance","ɵɵtextInterpolate1","getAbbreviationForName","IconComponent","constructor","diameter","backgroundColor","borderColor","defaultAbbreviation","iconName","names","trim","split","filter","Boolean","length","getIconColorForName","COLOR_CODES","nameSum","defaultColor","i","charCodeAt","index","getIconSize","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","IconComponent_img_1_Template","IconComponent_span_2_Template","IconComponent_div_3_Template","NgStyle","NgIf","styles","_IconComponent","VaIconModule","_VaIconModule","VaSearchInputDirective","constructor","elementRef","focus","nativeElement","selector","select","ɵɵdirectiveInject","ElementRef","selectors","standalone","_VaSearchInputDirective","LocalStorageService","get","name","browserSupport","localStorage","getItem","set","value","setItem","remove","removeItem","factory","ɵfac","providedIn","_LocalStorageService","SEARCH_TERM_FILTER","SearchBoxService","constructor","localStorageService","saveSearchTerm","contextKey","input","set","getSearchTerm","get","ɵɵinject","LocalStorageService","factory","ɵfac","providedIn","_SearchBoxService","SearchBoxComponent","constructor","searchBoxService","update","EventEmitter","submit","highlightWhenSelected","disabled","initial","enabledSaveSearchTerm","contextKey","placeholder","isSelected","ngOnInit","getSearchTerm","emit","submitSearch","term","saveSearchTerm","inputArea","selector","updateSearch","focusOnSearchBox","window","setTimeout","focus","ɵɵdirectiveInject","SearchBoxService","selectors","viewQuery","rf","ctx","VaSearchInputDirective","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","input_r2","ɵɵreference","ɵɵresetView","value","i0","ɵɵelementEnd","ɵɵtext","ɵɵproperty","ɵɵpureFunction3","_c0","ɵɵadvance","CommonModule","NgClass","FormsModule","MatIconModule","MatIcon","styles","changeDetection","_SearchBoxComponent","VaSearchBoxModule","SearchBoxComponent","_VaSearchBoxModule","en_devel_default","WEBLATE_COMPONENT_NAME","Pinned","AdvancedColumnOrganizerService","constructor","translator","searchTerm$$","BehaviorSubject","searchTerm$","asObservable","columnDefs$$","columnDefs$","groupDefs$$","groupDefs$","selectedOrderedColumns$$","selectedOrderedColumns$","columnDefsByID$","pipe","map","columnDefs","columnDefsByID","cd","id","selectedColumns$","getSelectedColumns$","searchedGroups$","getSearchedGroups$","pinnedLeftColumns$","getPinnedLeftColumns$","pinnedRightColumns$","getPinnedRightColumns$","configure","saveKey","colDefs","groupDefs","useI18NTranslations","displayName","instant","gd","name","next","selectedOrderedColumns","value","filter","c","pinned","hidden","storedConfigJson","localStorage","getItem","JSON","parse","pinnedColumns$","Pinned","PINNED_LEFT","combineLatest","selectedColumnIDs","keyedColumns","isVisible","PINNED_UNSET","PINNED_RIGHT","pinSide","columnDef","searchTerm","allColumns","length","columns","groups","groupDef","indexOf","filterGroupsBySearchTerm","updateSearchTerm","st","columnMatchesSearchTerm","column","toLowerCase","group","some","__spreadProps","__spreadValues","setColumnVisibility","cols","index","push","splice","save","saveName","getValue","setItem","stringify","selectAll","columnGroup","deselectAll","columnDroppedInList","prevIndex","curIndex","moveItemInArray","getSelectedColumns","ɵɵinject","TranslateService","factory","ɵfac","_AdvancedColumnOrganizerService","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtemplate","AdvancedColumnOrganizerComponent_ng_container_6_ng_container_3_Template","ɵɵelementEnd","AdvancedColumnOrganizerComponent_ng_container_6_ng_container_5_Template","ɵɵadvance","ɵɵproperty","filtered_checkablelist_r2","filtered_dragable_list_r3","ɵɵlistener","$event","ɵɵrestoreView","_r4","ctx_r4","ɵɵnextContext","ɵɵresetView","setActiveTab","index","toString","AdvancedColumnOrganizerComponent_ng_container_7_ng_container_5_Template","AdvancedColumnOrganizerComponent_ng_container_7_ng_container_8_Template","activeTab","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","searchTerm$","AdvancedColumnOrganizerComponent_ng_template_13_ng_container_3_div_1_Template","searchedGroups_r7","length","column_r11","_r10","$implicit","setColumnVisibility","id","checked","isVisible","pinned","name","_r8","columnGroup_r9","selectAll","deselectAll","AdvancedColumnOrganizerComponent_ng_template_13_ng_container_5_ng_container_1_ng_container_11_Template","columns","AdvancedColumnOrganizerComponent_ng_template_13_ng_container_5_ng_container_1_Template","_r6","updateSearchTerm","AdvancedColumnOrganizerComponent_ng_template_13_ng_container_3_Template","AdvancedColumnOrganizerComponent_ng_template_13_ng_container_5_Template","searchedGroups$","ɵɵtextInterpolate","column_r12","columnInfo_r14","ɵɵelement","_r13","columnDroppedInList","AdvancedColumnOrganizerComponent_ng_template_15_div_7_div_4_Template","AdvancedColumnOrganizerComponent_ng_template_15_div_7_div_5_Template","AdvancedColumnOrganizerComponent_ng_template_15_div_7_div_10_Template","ɵɵpureFunction2","_c0","i_r15","isMobileScreen","column_r16","AdvancedColumnOrganizerComponent_ng_template_15_div_4_Template","AdvancedColumnOrganizerComponent_ng_template_15_div_7_Template","AdvancedColumnOrganizerComponent_ng_template_15_div_9_Template","pinnedLeftColumns$","selectedColumns$","pinnedRightColumns$","AdvancedColumnOrganizerComponent","constructor","advancedColumnOrganizerService","dialogData","breakpointObserver","dialogRef","saveName","loadColumns","getActiveTab","event","item","data","columnIndex","currentIndex","save","selectedColumns","getSelectedColumns","close","configure","columnConfigs","groupConfigs","useI18NTranslations","columnGroup","onClose","isMatched","currentTab","sessionStorage","setItem","getItem","ɵɵdirectiveInject","AdvancedColumnOrganizerService","MAT_DIALOG_DATA","BreakpointObserver","MatDialogRef","selectors","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","i0","_r1","AdvancedColumnOrganizerComponent_ng_container_6_Template","AdvancedColumnOrganizerComponent_ng_container_7_Template","AdvancedColumnOrganizerComponent_ng_template_13_Template","ɵɵtemplateRefExtractor","AdvancedColumnOrganizerComponent_ng_template_15_Template","_AdvancedColumnOrganizerComponent","AdvancedColumnOrganizerButtonComponent","constructor","dialog","columnsChange","EventEmitter","ngOnInit","emitInitialVisibleColumns","window","requestAnimationFrame","saveName","storedVisibleColumns","localStorage","getItem","visibleColumns","JSON","parse","emit","error","console","columnConfigs","cols","filter","col","hidden","pinned","Pinned","PINNED_LEFT","PINNED_RIGHT","map","id","openManager","dialogData","groupConfigs","useI18NTranslations","dialogRef","open","AdvancedColumnOrganizerComponent","width","panelClass","autoFocus","data","afterClosed","pipe","take","subscribe","save","componentInstance","selectedColumns","ɵɵdirectiveInject","MatDialog","selectors","inputs","outputs","ngContentSelectors","_c0","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵprojection","ɵɵelementEnd","_AdvancedColumnOrganizerButtonComponent","ColumnSorterService","loadSavedColumnInfo","columnInfo","saveName","localStorage","loadedInfoJSON","getItem","validateSavedData","JSON","parse","saveColumnInfo","passedInColumns","loadedColumns","forEach","col","colFound","find","searchCol","id","name","push","filter","setItem","stringify","factory","ɵfac","_ColumnSorterService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","columnMenu_r2","ɵɵadvance","ɵɵtextInterpolate","ctx_r0","iconName","ɵɵtextInterpolate1","buttonLabel","ɵɵelementContainer","ɵɵtemplate","ColumnSorterComponent_div_7_mat_card_5_ng_container_4_Template","column_r4","hidden","nameOutput_r5","ɵɵpureFunction1","_c1","name","ɵɵlistener","$event","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","columnMenuDropped","i0","stopPropagation","$implicit","toggleSelectedColumn","id","ColumnSorterComponent_div_7_ng_container_4_Template","ColumnSorterComponent_div_7_mat_card_5_Template","ɵɵpureFunction2","_c0","i_r6","ɵɵelementContainerStart","ɵɵpipeBind1","name_r7","ColumnSorterComponent_ng_template_8_ng_container_0_Template","ColumnSorterComponent_ng_template_8_ng_container_1_Template","useI18NTranslations","ColumnSorterComponent","constructor","elementRef","columnSorterService","breakpointObserver","columnsChange","EventEmitter","columnsUpdated","columnNamesUpdated","isMobile$","observe","Breakpoints","Handset","pipe","map","result","matches","shareReplay","refCount","bufferSize","ngOnInit","calculateColumnInformation","ngOnChanges","changes","columns","columnNames","columnConfigs","ngAfterViewInit","nativeElement","classList","columnInfo","colConfig","columnId","columnName","currElement","index","loadSavedColumnInfo","saveName","emitColumns","event","moveItemInArray","item","data","columnIndex","currentIndex","colFound","find","col","saveColumns","window","requestAnimationFrame","emit","filter","colInfo","saveColumnInfo","ɵɵdirectiveInject","ElementRef","ColumnSorterService","BreakpointObserver","selectors","inputs","outputs","features","ɵɵProvidersFeature","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","ColumnSorterComponent_button_0_Template","ColumnSorterComponent_button_2_Template","ColumnSorterComponent_div_7_Template","ColumnSorterComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","_ColumnSorterComponent","VaMaterialTableComponent","selectors","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","_VaMaterialTableComponent","VaMaterialTableModule","CommonModule","MatTableModule","MatSortModule","MatButtonModule","MatIconModule","MatCardModule","DragDropModule","MatMenuModule","MatCheckboxModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatDialogModule","VaSearchBoxModule","MatTabsModule","_VaMaterialTableModule","formatPhoneNumber","phoneNumber","formatForInternational","countryCode","numberString","toString","formatting","newCountryCode","formatNumber","PhoneNumberFormatPipe","transform","pure","_PhoneNumberFormatPipe","InternationalPhoneNumberFormatPipe","_InternationalPhoneNumberFormatPipe","DEFAULT_CURRENCY_CODE","DEFAULT_LOCALE","DisplayValuePipe","constructor","translateService","locale","updateValue","displayType","currencyPipe","CurrencyPipe","displayValue","transform","value","currencyCode","percentPipe","PercentPipe","digitsInfo","decimalPipe","DecimalPipe","instant","outOfValue","maxDecimalPlaces","undefined","onTranslationChange","subscribe","onLangChange","onDefaultLangChange","ngOnDestroy","unsubscribe","ɵɵdirectiveInject","TranslateService","pure","_DisplayValuePipe","CommonPipesModule","InternationalPhoneNumberFormatPipe","PhoneNumberFormatPipe","DisplayValuePipe","_CommonPipesModule","ConfirmationModule","CommonModule","MatButtonModule","MatDialogModule","_ConfirmationModule","UpgradeCTADialogModule","CommonModule","MatDialogModule","MatIconModule","MatButtonModule","MatChipsModule","MatProgressSpinnerModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","_UpgradeCTADialogModule","VaCardsModule","CommonModule","MatCardModule","MatIconModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatTooltipModule","CommonPipesModule","_VaCardsModule","VaGoalTableModule","MatTableModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","VaCardsModule","CommonModule","MatCardModule","MatIconModule","_VaGoalTableModule","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","previousImage","nextImage","ɵɵelementEnd","ɵɵproperty","getSrcSetForImage","lightboxConfig","imageUrls","currentIndex","ɵɵsanitizeUrl","_r4","_r1","close","ɵɵtext","ɵɵtemplate","VaLightboxComponent_div_0_img_6_Template","VaLightboxComponent_div_0_img_7_Template","ɵɵstyleProp","isVisible","ɵɵadvance","useSrcSet","VaLightboxComponent","constructor","closed","EventEmitter","open","config","index","image","emit","length","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","VaLightboxComponent_div_0_Template","NgIf","MatIconModule","MatIcon","MatButtonModule","MatFabButton","styles","_VaLightboxComponent","VaFullscreenLightboxService","constructor","dialog","open","config","__async","ref","VaLightboxComponent","data","height","width","componentInstance","Error","firstValueFrom","closed","asObservable","close","ɵɵinject","Dialog","factory","ɵfac","providedIn","_VaFullscreenLightboxService","LocalRefreshingCacheService","constructor","localstorage","defaultExpires","getCacheValueAndRefresh","key","value$","expiry","of","undefined","cachedValue","getCacheValue","pipe","tap","newValue","setCacheValue","startWith","setCacheRecord","deleteCacheValue","remove","getCacheRecord","value","JSON","parse","get","expires","Date","getTime","now","_expires","sanitizeAndGenerateDateExpiry","set","stringify","expiryDate","Math","abs","ɵɵinject","LocalStorageService","factory","ɵfac","providedIn","_LocalRefreshingCacheService","getDefaults","defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","unescapeTest","unescape","_","caret","edit","regex","opt","obj","name","val","nonWordAndColonTest","originIndependentUrl","cleanUrl","sanitize","base","href","prot","resolveUrl","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","c","invert","l","suffLen","currChar","findClosingBracket","b","level","checkSanitizeDeprecation","repeatString","pattern","result","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","Tokenizer","options","src","trimmed","top","tokens","istask","ischecked","indent","i","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","list","itemRegex","t","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","spacers","hasMultipleLineBreaks","tag","item","j","k","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","maskedSrc","prevChar","nextChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","hasNonSpaceChars","hasSpaceCharsOnBothEnds","mangle","prevCapZero","smartypants","block","__spreadValues","__spreadProps","inline","out","Lexer","_Lexer","rules","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","Renderer","code","infostring","lang","quote","slugger","id","body","ordered","start","type","startatt","checked","header","content","flags","TextRenderer","Slugger","value","originalSlug","isDryRun","slug","occurenceAccumulator","Parser","_Parser","l2","l3","cell","loose","itemBody","task","checkbox","ret","renderer","Hooks","markdown","onError","silent","async","callback","e","msg","parseMarkdown","parser","origOpt","marked","throwError","highlight","done","err","pending","args","extensions","pack","opts","ext","prevRenderer","prop","tokenizer","prevTokenizer","hooks","prevHook","arg","walkTokens","values","childTokens","setOptions","use","parseInline","parser","Parser","lexer","Lexer","_c0","BUTTON_TEXT_COPY","BUTTON_TEXT_COPIED","ClipboardButtonComponent","Subject","switchMap","merge","of","timer","mapTo","distinctUntilChanged","shareReplay","startWith","map","copied","t","ɵɵdefineComponent","rf","ctx","ɵɵelementStart","ɵɵpipe","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵclassProp","ɵɵpipeBind1","ɵɵadvance","ɵɵtextInterpolate","AsyncPipe","ClipboardOptions","PrismPlugin","MarkedOptions","errorJoyPixelsNotLoaded","errorKatexNotLoaded","errorMermaidNotLoaded","errorClipboardNotLoaded","errorClipboardViewContainerRequired","errorSrcWithoutHttpClient","SECURITY_CONTEXT","InjectionToken","MarkdownService","platform","securityContext","http","clipboardOptions","options","sanitizer","Renderer","Subject","value","__spreadValues","markdown","decodeHtml","inline","emoji","mermaid","markedOptions","trimmed","decoded","emojified","marked","element","viewContainerRef","clipboard","katex","katexOptions","mermaidOptions","src","errorSrcWithoutHttpClient","map","isPlatformBrowser","noLanguageElements","x","html","textarea","renderer","extendedRenderer","defaultCode","code","language","isEscaped","urlProtocolIndex","urlWithoutProtocol","lastSlashIndex","lastUrlSegment","lastDotIndex","extension","errorJoyPixelsNotLoaded","errorKatexNotLoaded","errorClipboardNotLoaded","errorClipboardViewContainerRequired","buttonComponent","buttonTemplate","preElements","i","preElement","preWrapperElement","toolbarWrapperElement","embeddedViewRef","ClipboardButtonComponent","clipboardInstance","node","errorMermaidNotLoaded","mermaidElements","indentStart","line","lineIdentStart","t","ɵɵinject","PLATFORM_ID","SECURITY_CONTEXT","HttpClient","ClipboardOptions","MarkedOptions","DomSanitizer","ɵɵdefineInjectable","MarkdownComponent","markdownService","EventEmitter","takeUntil","parsedOptions","renderOptions","parsed","error","PrismPlugin","plugin","classes","option","attributeValue","attributeName","upperChars","str","n","ɵɵdirectiveInject","ElementRef","ViewContainerRef","ɵɵdefineComponent","ɵɵNgOnChangesFeature","_c0","rf","ctx","ɵɵprojectionDef","ɵɵprojection","MarkdownModule","markdownModuleConfig","MarkdownService","SECURITY_CONTEXT","SecurityContext","t","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","MermaidAPI","SecurityLevel","Theme","LogLevel","ProjectMilestonesModule","CommonModule","MatCardModule","MatExpansionModule","MatIconModule","MatProgressBarModule","VaIconModule","MarkdownModule","_ProjectMilestonesModule","VaSanitizePipe","constructor","domSanitizer","transform","html","sanitize","SecurityContext","HTML","ɵɵdirectiveInject","DomSanitizer","pure","_VaSanitizePipe","VaSafeHtmlModule","CommonModule","_VaSafeHtmlModule","VaActionMenuModule","CommonModule","MatButtonModule","MatIconModule","MatMenuModule","_VaActionMenuModule","VaBadgeModule","_VaBadgeModule","VaBreadcrumbsModule","CommonModule","RouterModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","_VaBreadcrumbsModule","VaFilterChipsModule","CommonModule","MatIconModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","CommonPipesModule","MatDialogModule","MatDividerModule","MatButtonModule","MatRippleModule","MatMenuModule","_VaFilterChipsModule","VaSearchSelectModule","CommonModule","VaSearchBoxModule","MatIconModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","_VaSearchSelectModule","VaItemsAndStatusModule","CommonModule","VaSearchSelectModule","_VaItemsAndStatusModule","ɵɵelementStart","ɵɵlistener","option_r3","ɵɵrestoreView","_r2","$implicit","ctx_r3","ɵɵnextContext","ɵɵresetView","deselectOption","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","optionText","ɵɵelementContainer","ɵɵproperty","option_r5","searchFunc","PlainOption_r6","MatchedOption_r7","ɵɵpureFunction1","_c0","ɵɵtextInterpolate","option_r8","optionTextPreMatch","option_r9","optionTextMatch","optionTextPostMatch","VaMultiSelectComponent","constructor","cdr","selection","EventEmitter","selected","allowNew","limitResults","inputControl","FormControl","option","index","indexOf","splice","emit","detectChanges","optionSelected","event","value","push","setValue","displayProperty","toLowerCase","slice","length","filteredOptions","displayedOptions","options","filter","find","map","unshift","buildOption","name","ɵɵdirectiveInject","ChangeDetectorRef","selectors","inputs","placeholderText","outputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","VaMultiSelectComponent_mat_chip_row_5_Template","ɵɵelement","$event","i0","_r1","VaMultiSelectComponent_mat_option_9_Template","VaMultiSelectComponent_ng_template_10_Template","ɵɵtemplateRefExtractor","VaMultiSelectComponent_ng_template_12_Template","chipGrid_r10","auto_r11","_VaMultiSelectComponent","VaMultiSelectModule","CommonModule","MatIconModule","GalaxyWrapModule","MatSelectModule","MatInputModule","GalaxyFormFieldModule","FormsModule","MatAutocompleteModule","ReactiveFormsModule","MatChipsModule","_VaMultiSelectModule","URLParamService","constructor","router","route","location","appliedParams","events","pipe","filter","event","NavigationEnd","subscribe","applyParams","newParams","params","Object","assign","snapshot","queryParams","replaceState","window","pathname","serialize","removeParams","oldParams","currentParams","forEach","param","obj","keys","length","reduce","a","k","push","encodeURIComponent","join","ɵɵinject","Router","ActivatedRoute","Location","factory","ɵfac","providedIn","_URLParamService","LAST_APPLIED_FIELDS","EXPIRY_LAST_APPLIED_FIELDS","FilterService","constructor","route","paramService","localStorageService","lazyLoadedFields","initializationParams","_savedFilters","BehaviorSubject","batchChangedFields","_fieldValueChanges","setFilters","allFilters","disableSavedFilters","filters","fieldSubscription","fieldValuesObservable","subscribe","field","updateUrl","saveCurrentFilter","Date","now","isFieldIncludedInBatch","next","setLazyLoadedFields","params","getFilterValuesFromUrl","existingSavedFilters","get","id","savedFilters","JSON","parse","lastAppliedFields","serializedFields","updateFilterFields","fields","lazyFieldSubscription","fieldOptionsObservable","pipe","filter","some","lazyField","trackLazyLoadedFieldOptionChanges","asObservable","skipWhile","value","map","savedFilter","name","fieldValueChanges","expiry","currentlyAppliedFields","serializeFilters","getValue","existingSavedFilterIndex","findIndex","push","set","stringify","removeSavedFilter","splice","applySavedFilter","paramValues","snapshot","queryParams","decodeURIComponent","serializedFilters","filterParam","applyParams","removeParams","changedField","find","indexOfField","f","length","fieldsToUpdate","serializeAllActiveFields","activeFields","reduce","previous","current","serializeValue","forEach","index","fieldArray","key","newValue","deserializeValue","publishChanges","updateFilterField","clearValue","changeValue","exportFilterString","importFilterFields","importString","ngOnDestroy","unsubscribe","ɵɵinject","ActivatedRoute","URLParamService","LocalStorageService","factory","ɵfac","_FilterService","VaFilterModule","RouterModule","CommonModule","VaSearchBoxModule","VaSearchSelectModule","VaItemsAndStatusModule","VaMultiSelectModule","MatCheckboxModule","MatTabsModule","MatMenuModule","MatIconModule","MatRadioModule","MatButtonModule","MatInputModule","MatDialogModule","MatListModule","MatDatepickerModule","FormsModule","ReactiveFormsModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatMomentDateModule","LayoutModule","MatTooltipModule","GalaxyWrapModule","MatChipsModule","_VaFilterModule","VaListModule","CommonModule","MatCheckboxModule","MatButtonModule","MatIconModule","MatSlideToggleModule","MatTooltipModule","MatProgressSpinnerModule","MatProgressBarModule","MatChipsModule","VaIconModule","VaActionMenuModule","_VaListModule","VaNavItemListModule","CommonModule","MatButtonModule","MatIconModule","_VaNavItemListModule","VaNavItemModule","CommonModule","MatButtonModule","MatIconModule","RouterModule","_VaNavItemModule","VaNavModule","CommonModule","MatSidenavModule","MatButtonModule","MatToolbarModule","MatIconModule","_VaNavModule","VaNestedSelectorModule","CommonModule","_VaNestedSelectorModule","VaProductNavService","constructor","router","filters$$","BehaviorSubject","infoSidebar$$","primaryActionButton$$","secondaryActionButton$$","breadcrumbs$$","navBadges$$","search$$","showInfoIcon$$","scroll$$","toggleNav$$","Subject","isSelected","navItem","isChild","children","length","forEach","child","selected","find","ch","isActive","url","setNavItems","navItems","_navItems","map","item","events","pipe","filter","event","NavigationEnd","subscribe","setFilters","filters","next","setInfoSidebar","pageInfo","Array","isArray","setPrimaryActionButton","actionButton","setSecondaryActionButton","setBreadcrumbs","breadcrumbs","setNavBadges","navBadges","setSearch","search","setShowInfoIcon","flag","setScroll","scrollEvent","toggleNav","breadcrumbs$","asObservable","primaryActionButton$","secondaryActionButton$","infoSidebar$","filters$","navBadges$","search$","showInfoIcon$","scroll$","shareReplay","toggleNav$","value","ɵɵinject","Router","factory","ɵfac","_VaProductNavService","materialModules","MatToolbarModule","MatIconModule","MatSidenavModule","MatButtonModule","MatMenuModule","MatRadioModule","MatBadgeModule","MatInputModule","MatChipsModule","VaProductNavModule","forRoot","ngModule","providers","VaProductNavService","RouterModule","CommonModule","FormsModule","LayoutModule","VaBreadcrumbsModule","VaFilterModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","AtlasModule","GalaxyBadgeModule","_VaProductNavModule","VaStatusBannerModule","CommonModule","MatIconModule","_VaStatusBannerModule","VaStencilsModule","CommonModule","MatCardModule","MatIconModule","MatInputModule","MatSelectModule","MatExpansionModule","MatCheckboxModule","_VaStencilsModule","VaButtonModule","CommonModule","RouterModule","VaIconModule","MatIconModule","MatTooltipModule","MatButtonModule","GalaxyTooltipModule","_VaButtonModule","VaCheckboxModule","CommonModule","MatCheckboxModule","_VaCheckboxModule","VaChipModule","CommonModule","MatChipsModule","_VaChipModule","VaExpandModule","CommonModule","_VaExpandModule","VaMenuModule","CommonModule","RouterModule","VaIconModule","MatIconModule","MatMenuModule","MatButtonModule","GalaxyTooltipModule","_VaMenuModule","VaMultilineModule","CommonModule","RouterModule","_VaMultilineModule","VaSwitchModule","CommonModule","MatSlideToggleModule","_VaSwitchModule","VaTableModule","CommonModule","MatButtonModule","MatIconModule","MatProgressSpinnerModule","MatCheckboxModule","MatListModule","MatCardModule","VaButtonModule","VaCheckboxModule","VaExpandModule","VaMultilineModule","VaSwitchModule","VaMenuModule","VaChipModule","TranslateModule","_VaTableModule","WelcomeModule","provide","MatDialogRef","useValue","MAT_DIALOG_DATA","imports","CommonModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatButtonModule","MatIconModule","MatTabsModule","MatRadioModule","MatRippleModule","MatDialogModule","MatProgressSpinnerModule","UpgradeCTADialogModule","_WelcomeModule","UIKitModule","VaCardsModule","CommonModule","VaSearchBoxModule","VaIconModule","VaTableModule","VaButtonModule","VaCheckboxModule","VaMenuModule","VaExpandModule","VaSwitchModule","VaMultilineModule","VaFilterModule","VaItemsAndStatusModule","VaMultiSelectModule","VaSearchSelectModule","VaChipModule","VaSafeHtmlModule","VaListModule","VaActionMenuModule","VaNestedSelectorModule","VaBreadcrumbsModule","VaNavModule","VaNavItemModule","VaNavItemListModule","VaProductNavModule","VaStencilsModule","CommonPipesModule","VaBadgeModule","UpgradeCTADialogModule","WelcomeModule","VaMaterialTableModule","VaFilterChipsModule","VaStatusBannerModule","ProjectMilestonesModule","VaGoalTableModule","_UIKitModule"],"x_google_ignoreList":[31,32]}