Use the new Angular 17 template syntax and property 'styleUrl'

This commit is contained in:
Chris Witterholt 2024-04-24 16:44:06 +00:00
parent 544b400829
commit ea39bbc3d7
74 changed files with 1036 additions and 774 deletions

View File

@ -35,7 +35,7 @@
"@angular/platform-browser": "^17.3.5", "@angular/platform-browser": "^17.3.5",
"@angular/platform-browser-dynamic": "^17.3.5", "@angular/platform-browser-dynamic": "^17.3.5",
"@angular/router": "^17.3.5", "@angular/router": "^17.3.5",
"@fontsource/roboto": "^5.0.12", "@fontsource/roboto": "^5.0.13",
"@ngx-translate/core": "^15.0.0", "@ngx-translate/core": "^15.0.0",
"@ngx-translate/http-loader": "^8.0.0", "@ngx-translate/http-loader": "^8.0.0",
"core-js": "^3.37.0", "core-js": "^3.37.0",
@ -58,8 +58,8 @@
"@types/jasmine": "~5.1.4", "@types/jasmine": "~5.1.4",
"@types/jasminewd2": "~2.0.13", "@types/jasminewd2": "~2.0.13",
"@types/node": "~20.12.7", "@types/node": "~20.12.7",
"@typescript-eslint/eslint-plugin": "7.7.0", "@typescript-eslint/eslint-plugin": "7.7.1",
"@typescript-eslint/parser": "7.7.0", "@typescript-eslint/parser": "7.7.1",
"axios": "^1.6.8", "axios": "^1.6.8",
"browserslist": "^4.23.0", "browserslist": "^4.23.0",
"browserslist-useragent-regexp": "^4.1.3", "browserslist-useragent-regexp": "^4.1.3",

View File

@ -1,23 +1,35 @@
<mat-toolbar color="primary"> <mat-toolbar color="primary">
<mat-toolbar-row> <mat-toolbar-row>
<button mat-icon-button (click)="menu.toggle()"><mat-icon>menu</mat-icon></button> <button mat-icon-button (click)="menu.toggle()">
<mat-icon>menu</mat-icon>
</button>
<span class="page-title">{{ pageTitle | translate }}</span> <span class="page-title">{{ pageTitle | translate }}</span>
<span class="spacer"></span> <span class="spacer"></span>
<button *ngIf="showLogin" mat-button (click)="login()">{{ 'LOGIN' | translate }}</button> @if (showLogin) {
<button *ngIf="webSocketOpen" <button
mat-icon-button mat-button
(click)="forceWebSocketReconnection()" (click)="login()">
class="connection-status" {{ 'LOGIN' | translate }}
matTooltip="{{ 'CONNECTED_TO_OPENLP' | translate }}"> </button>
<mat-icon *ngIf="webSocketOpen">link</mat-icon> }
</button> @if (webSocketOpen) {
<button *ngIf="!webSocketOpen" <button
mat-icon-button mat-icon-button
(click)="forceWebSocketReconnection()" (click)="forceWebSocketReconnection()"
class="connection-status" class="connection-status"
matTooltip="{{ 'DISCONNECTED' | translate }}"> matTooltip="{{ 'CONNECTED_TO_OPENLP' | translate }}">
<mat-icon *ngIf="!webSocketOpen">link_off</mat-icon> <mat-icon>link</mat-icon>
</button> </button>
}
@else {
<button
mat-icon-button
(click)="forceWebSocketReconnection()"
class="connection-status"
matTooltip="{{ 'DISCONNECTED' | translate }}">
<mat-icon>link_off</mat-icon>
</button>
}
<span class="app-version">v{{appVersion}}</span> <span class="app-version">v{{appVersion}}</span>
</mat-toolbar-row> </mat-toolbar-row>
</mat-toolbar> </mat-toolbar>
@ -92,188 +104,214 @@
</main> </main>
<!-- These two toolbars are for padding the content so the real toolbars do not block content when scrolled down --> <!-- These two toolbars are for padding the content so the real toolbars do not block content when scrolled down -->
<mat-toolbar class="toolbar-padding"></mat-toolbar> <mat-toolbar class="toolbar-padding"></mat-toolbar>
<mat-toolbar *ngIf="fastSwitching" class="toolbar-padding"></mat-toolbar> @if (fastSwitching) {
<mat-toolbar class="toolbar-padding"></mat-toolbar>
}
<footer> <footer>
<mat-toolbar class="footer"> <mat-toolbar class="footer">
<button *ngIf="bigDisplayButtons" @if (bigDisplayButtons) {
mat-fab color="primary" <button
(click)="previousItem()" mat-fab color="primary"
matTooltip="{{ 'PREVIOUS_ITEM' | translate }}" (click)="previousItem()"
matTooltipPosition="above"> matTooltip="{{ 'PREVIOUS_ITEM' | translate }}"
<mat-icon>first_page</mat-icon> matTooltipPosition="above">
</button> <mat-icon>first_page</mat-icon>
<button *ngIf="!bigDisplayButtons" </button>
mat-icon-button (click)="previousItem()" <button
matTooltip="{{ 'PREVIOUS_ITEM' | translate }}" mat-fab color="primary"
matTooltipPosition="above"> (click)="nextItem()"
<mat-icon>first_page</mat-icon> matTooltip="{{ 'NEXT_ITEM' | translate }}"
</button> matTooltipPosition="above">
<button *ngIf="bigDisplayButtons" <mat-icon>last_page</mat-icon>
mat-fab color="primary" </button>
(click)="nextItem()" <button
matTooltip="{{ 'NEXT_ITEM' | translate }}" mat-fab color="primary"
matTooltipPosition="above"> (click)="previousSlide()"
<mat-icon>last_page</mat-icon> matTooltip="{{ 'PREVIOUS_SLIDE' | translate }}"
</button> matTooltipPosition="above">
<button *ngIf="!bigDisplayButtons" <mat-icon>navigate_before</mat-icon>
mat-icon-button (click)="nextItem()" </button>
matTooltip="{{ 'NEXT_ITEM' | translate }}" <button
matTooltipPosition="above"> mat-fab color="primary"
<mat-icon>last_page</mat-icon> (click)="nextSlide()"
</button> matTooltip="{{ 'NEXT_SLIDE' | translate }}"
<button *ngIf="bigDisplayButtons" matTooltipPosition="above">
mat-fab color="primary" <mat-icon>navigate_next</mat-icon>
(click)="previousSlide()" </button>
matTooltip="{{ 'PREVIOUS_SLIDE' | translate }}" <button
matTooltipPosition="above"> mat-fab color="primary"
<mat-icon>navigate_before</mat-icon> #squashedDisplayButton
</button> (click)="openDisplayModeSelector()"
<button *ngIf="!bigDisplayButtons" class="squashed-display-button"
mat-icon-button (click)="previousSlide()" matTooltip="{{ 'CHANGE_DISPLAY_MODE' | translate }}"
matTooltip="{{ 'PREVIOUS_SLIDE' | translate }}" matTooltipPosition="above">
matTooltipPosition="above"> @if (state.blank) {
<mat-icon>navigate_before</mat-icon> <mat-icon>videocam_off</mat-icon>
</button> }
<button *ngIf="bigDisplayButtons" @else if (state.theme) {
mat-fab color="primary" <mat-icon>wallpaper</mat-icon>
(click)="nextSlide()" }
matTooltip="{{ 'NEXT_SLIDE' | translate }}" @else if (state.display) {
matTooltipPosition="above"> <mat-icon>desktop_windows</mat-icon>
<mat-icon>navigate_next</mat-icon> }
</button> @else if (state.live) {
<button *ngIf="!bigDisplayButtons" <mat-icon>videocam</mat-icon>
mat-icon-button (click)="nextSlide()" }
matTooltip="{{ 'NEXT_SLIDE' | translate }}" </button>
matTooltipPosition="above"> <button
<mat-icon>navigate_next</mat-icon> mat-fab color="primary"
</button> (click)="blankDisplay()"
<button *ngIf="bigDisplayButtons" class="displayButton"
mat-fab color="primary" [class.active]="state.blank"
#squashedDisplayButton [disabled]="state.blank"
(click)="openDisplayModeSelector()" matTooltip="{{ 'SHOW_BLACK' | translate }}"
class="squashed-display-button" matTooltipPosition="above">
matTooltip="{{ 'CHANGE_DISPLAY_MODE' | translate }}" <mat-icon>videocam_off</mat-icon>
matTooltipPosition="above"> </button>
<mat-icon *ngIf="state.blank">videocam_off</mat-icon> <button
<mat-icon *ngIf="state.theme">wallpaper</mat-icon> mat-fab color="primary"
<mat-icon *ngIf="state.display">desktop_windows</mat-icon> (click)="themeDisplay()"
<mat-icon *ngIf="state.live()">videocam</mat-icon> class="displayButton"
</button> [class.active]="state.theme"
<button *ngIf="!bigDisplayButtons" [disabled]="state.theme"
mat-icon-button matTooltip="{{ 'SHOW_BACKGROUND' | translate }}"
#squashedDisplayButton matTooltipPosition="above">
(click)="openDisplayModeSelector()" <mat-icon>wallpaper</mat-icon>
class="squashed-display-button" </button>
matTooltip="{{ 'CHANGE_DISPLAY_MODE' | translate }}" <button
matTooltipPosition="above"> mat-fab color="primary"
<mat-icon *ngIf="state.blank">videocam_off</mat-icon> (click)="desktopDisplay()"
<mat-icon *ngIf="state.theme">wallpaper</mat-icon> class="displayButton"
<mat-icon *ngIf="state.display">desktop_windows</mat-icon> [class.active]="state.display"
<mat-icon *ngIf="state.live()">videocam</mat-icon> [disabled]="state.display"
</button> matTooltip="{{ 'SHOW_DESKTOP' | translate }}"
<button *ngIf="bigDisplayButtons" matTooltipPosition="above">
mat-fab color="primary" <mat-icon>desktop_windows</mat-icon>
(click)="blankDisplay()" </button>
class="displayButton" <button
[class.active]="state.blank" mat-fab color="primary"
[disabled]="state.blank" (click)="showDisplay()"
matTooltip="{{ 'SHOW_BLACK' | translate }}" class="displayButton"
matTooltipPosition="above"> [class.active]="state.display"
<mat-icon>videocam_off</mat-icon> [disabled]="state.live"
</button> matTooltip="{{ 'SHOW_PRESENTATION' | translate }}"
<button *ngIf="!bigDisplayButtons" matTooltipPosition="above">
mat-icon-button (click)="blankDisplay()" <mat-icon>videocam</mat-icon>
class="displayButton" </button>
[class.active]="state.blank" }
[disabled]="state.blank" @else {
matTooltip="{{ 'SHOW_BLACK' | translate }}" <button
matTooltipPosition="above"> mat-icon-button
<mat-icon>videocam_off</mat-icon> (click)="previousItem()"
</button> matTooltip="{{ 'PREVIOUS_ITEM' | translate }}"
<button *ngIf="bigDisplayButtons" matTooltipPosition="above">
mat-fab color="primary" <mat-icon>first_page</mat-icon>
(click)="themeDisplay()" </button>
class="displayButton" <button
[class.active]="state.theme" mat-icon-button
[disabled]="state.theme" (click)="nextItem()"
matTooltip="{{ 'SHOW_BACKGROUND' | translate }}" matTooltip="{{ 'NEXT_ITEM' | translate }}"
matTooltipPosition="above"> matTooltipPosition="above">
<mat-icon>wallpaper</mat-icon> <mat-icon>last_page</mat-icon>
</button> </button>
<button *ngIf="!bigDisplayButtons" <button
mat-icon-button mat-icon-button (click)="previousSlide()"
(click)="themeDisplay()" matTooltip="{{ 'PREVIOUS_SLIDE' | translate }}"
class="displayButton" matTooltipPosition="above">
[class.active]="state.theme" <mat-icon>navigate_before</mat-icon>
[disabled]="state.theme" </button>
matTooltip="{{ 'SHOW_BACKGROUND' | translate }}" <button
matTooltipPosition="above"> mat-icon-button (click)="nextSlide()"
<mat-icon>wallpaper</mat-icon> matTooltip="{{ 'NEXT_SLIDE' | translate }}"
</button> matTooltipPosition="above">
<button *ngIf="bigDisplayButtons" <mat-icon>navigate_next</mat-icon>
mat-fab color="primary" </button>
(click)="desktopDisplay()" <button
class="displayButton" mat-icon-button
[class.active]="state.display" #squashedDisplayButton
[disabled]="state.display" (click)="openDisplayModeSelector()"
matTooltip="{{ 'SHOW_DESKTOP' | translate }}" class="squashed-display-button"
matTooltipPosition="above"> matTooltip="{{ 'CHANGE_DISPLAY_MODE' | translate }}"
<mat-icon>desktop_windows</mat-icon> matTooltipPosition="above">
</button> @if (state.blank) {
<button *ngIf="!bigDisplayButtons" <mat-icon>videocam_off</mat-icon>
mat-icon-button (click)="desktopDisplay()" }
class="displayButton" @else if (state.theme) {
[class.active]="state.display" <mat-icon>wallpaper</mat-icon>
[disabled]="state.display" }
matTooltip="{{ 'SHOW_DESKTOP' | translate }}" @else if (state.display) {
matTooltipPosition="above"> <mat-icon>desktop_windows</mat-icon>
<mat-icon>desktop_windows</mat-icon> }
</button> @else if (state.live) {
<button *ngIf="bigDisplayButtons" <mat-icon>videocam</mat-icon>
mat-fab color="primary" }
(click)="showDisplay()" </button>
class="displayButton" <button
[class.active]="state.display" mat-icon-button (click)="blankDisplay()"
[disabled]="state.live()" class="displayButton"
matTooltip="{{ 'SHOW_PRESENTATION' | translate }}" [class.active]="state.blank"
matTooltipPosition="above"> [disabled]="state.blank"
<mat-icon>videocam</mat-icon> matTooltip="{{ 'SHOW_BLACK' | translate }}"
</button> matTooltipPosition="above">
<button *ngIf="!bigDisplayButtons" <mat-icon>videocam_off</mat-icon>
mat-icon-button (click)="showDisplay()" </button>
class="displayButton" <button
[class.active]="state.display" mat-icon-button
[disabled]="state.live()" (click)="themeDisplay()"
matTooltip="{{ 'SHOW_PRESENTATION' | translate }}" class="displayButton"
matTooltipPosition="above"> [class.active]="state.theme"
<mat-icon>videocam</mat-icon> [disabled]="state.theme"
</button> matTooltip="{{ 'SHOW_BACKGROUND' | translate }}"
matTooltipPosition="above">
<mat-icon>wallpaper</mat-icon>
</button>
<button
mat-icon-button (click)="desktopDisplay()"
class="displayButton"
[class.active]="state.display"
[disabled]="state.display"
matTooltip="{{ 'SHOW_DESKTOP' | translate }}"
matTooltipPosition="above">
<mat-icon>desktop_windows</mat-icon>
</button>
<button
mat-icon-button (click)="showDisplay()"
class="displayButton"
[class.active]="state.display"
[disabled]="state.live"
matTooltip="{{ 'SHOW_PRESENTATION' | translate }}"
matTooltipPosition="above">
<mat-icon>videocam</mat-icon>
</button>
}
</mat-toolbar> </mat-toolbar>
<nav *ngIf="fastSwitching" @if (fastSwitching) {
mat-tab-nav-bar mat-stretch-tabs <nav
class="fast-switcher" mat-tab-nav-bar mat-stretch-tabs
[tabPanel]="tabPanel"> class="fast-switcher"
<a mat-tab-link [tabPanel]="tabPanel">
routerLink="/service" <a mat-tab-link
routerLinkActive #serviceRoute="routerLinkActive" routerLink="/service"
[active]="serviceRoute.isActive"><mat-icon>list</mat-icon></a> routerLinkActive #serviceRoute="routerLinkActive"
<a mat-tab-link [active]="serviceRoute.isActive"><mat-icon>list</mat-icon></a>
routerLink="/slides" <a mat-tab-link
routerLinkActive #slidesRoute="routerLinkActive" routerLink="/slides"
[active]="slidesRoute.isActive"><mat-icon>collections</mat-icon></a> routerLinkActive #slidesRoute="routerLinkActive"
<a mat-tab-link [active]="slidesRoute.isActive"><mat-icon>collections</mat-icon></a>
routerLink="/alerts" <a mat-tab-link
routerLinkActive #alertsRoute="routerLinkActive" routerLink="/alerts"
[active]="alertsRoute.isActive"><mat-icon>error</mat-icon></a> routerLinkActive #alertsRoute="routerLinkActive"
<a mat-tab-link [active]="alertsRoute.isActive"><mat-icon>error</mat-icon></a>
routerLink="/search" <a mat-tab-link
routerLinkActive #searchRoute="routerLinkActive" routerLink="/search"
[active]="searchRoute.isActive"><mat-icon>search</mat-icon></a> routerLinkActive #searchRoute="routerLinkActive"
<a mat-tab-link [active]="searchRoute.isActive"><mat-icon>search</mat-icon></a>
routerLink="/themes" <a mat-tab-link
routerLinkActive #themesRoute="routerLinkActive" routerLink="/themes"
[active]="themesRoute.isActive"><mat-icon>image</mat-icon></a> routerLinkActive #themesRoute="routerLinkActive"
</nav> [active]="themesRoute.isActive"><mat-icon>image</mat-icon></a>
</nav>
}
</footer> </footer>
</mat-sidenav-content> </mat-sidenav-content>
</mat-sidenav-container> </mat-sidenav-container>

View File

@ -20,7 +20,7 @@ import * as supportedBrowsers from '../assets/supportedBrowsers';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'] styleUrl: './app.component.scss'
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
// Make DisplayMode enum visible to html code // Make DisplayMode enum visible to html code
@ -39,7 +39,7 @@ export class AppComponent implements OnInit {
constructor(private translateService: TranslateService, private pageTitleService: PageTitleService, constructor(private translateService: TranslateService, private pageTitleService: PageTitleService,
private openlpService: OpenLPService, private dialog: MatDialog, private bottomSheet: MatBottomSheet, private openlpService: OpenLPService, private dialog: MatDialog, private bottomSheet: MatBottomSheet,
private windowRef: WindowRef, private shortcutsService: ShortcutsService, private settingsService: SettingsService) { private windowRef: WindowRef, private shortcutsService: ShortcutsService, private settingsService: SettingsService) {
this.pageTitleService.pageTitleChanged$.subscribe(pageTitle => this.pageTitle = pageTitle.toUpperCase()); this.pageTitleService.pageTitleChanged$.subscribe(pageTitle => this.pageTitle = pageTitle);
this.openlpService.stateChanged$.subscribe(item => this.state = item); this.openlpService.stateChanged$.subscribe(item => this.state = item);
this.openlpService.webSocketStateChanged$.subscribe(status => this.webSocketOpen = status === WebSocketStatus.Open); this.openlpService.webSocketStateChanged$.subscribe(status => this.webSocketOpen = status === WebSocketStatus.Open);
this.shortcutsService.shortcutsChanged$.subscribe(shortcuts => this.addShortcuts(shortcuts)); this.shortcutsService.shortcutsChanged$.subscribe(shortcuts => this.addShortcuts(shortcuts));

View File

@ -1,14 +1,16 @@
<h3>{{ 'SEND_AN_ALERT' | translate }}</h3> <h3>{{ 'SEND_AN_ALERT' | translate }}</h3>
<form #alertForm="ngForm"> <form #alertForm="ngForm">
<mat-form-field> <mat-form-field>
<input matInput <input
matInput
[(ngModel)]="alert" [(ngModel)]="alert"
type="text" type="text"
name="alert" name="alert"
placeholder="{{ 'ALERT' | translate }}" placeholder="{{ 'ALERT' | translate }}"
required> required>
</mat-form-field> </mat-form-field>
<button mat-raised-button color="primary" <button
mat-raised-button color="primary"
id="sendButton" id="sendButton"
[disabled]="!alertForm.form.valid" [disabled]="!alertForm.form.valid"
(click)="onSubmit(); alertForm.reset()"> (click)="onSubmit(); alertForm.reset()">

View File

@ -1,5 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSnackBar } from '@angular/material/snack-bar';
import { TranslateService } from '@ngx-translate/core';
import { PageTitleService } from '../../page-title.service'; import { PageTitleService } from '../../page-title.service';
import { OpenLPService } from '../../openlp.service'; import { OpenLPService } from '../../openlp.service';
@ -7,20 +8,31 @@ import { OpenLPService } from '../../openlp.service';
@Component({ @Component({
selector: 'openlp-alert', selector: 'openlp-alert',
templateUrl: './alert.component.html', templateUrl: './alert.component.html',
styleUrls: ['./alert.component.scss'], styleUrl: './alert.component.scss',
providers: [OpenLPService] providers: [OpenLPService]
}) })
export class AlertComponent { export class AlertComponent {
public alert: string; public alert: string;
public alertMessage: string;
constructor(private pageTitleService: PageTitleService, private openlpService: OpenLPService, constructor(
private snackBar: MatSnackBar) { private pageTitleService: PageTitleService,
pageTitleService.changePageTitle('Alerts'); private openlpService: OpenLPService,
private snackBar: MatSnackBar,
private translateService: TranslateService) {
this.translateService.get('ALERTS').subscribe(res => {
this.pageTitleService.changePageTitle(res);
});
this.translateService.get('ALERT_SUBMITTED').subscribe(res => {
this.alertMessage = res;
});
} }
onSubmit() { onSubmit() {
this.openlpService.showAlert(this.alert).subscribe(() => this.snackBar.open('Alert submitted', '', {duration: 2000})); this.openlpService.showAlert(this.alert).subscribe(
() => this.snackBar.open(this.alertMessage, '', { duration: 2000 })
);
} }
} }

View File

@ -1,7 +1,7 @@
<div <div
class="slide song" class="slide song"
[class.currentSlide]="active" [class.currentSlide]="active"
[class.mat-headline-2]="active" [class.mat-headline-2]="active"
[class.first]="!active && slide.first_slide_of_tag" [class.first]="!active && slide.first_slide_of_tag"
[innerHTML]="chordproFormatted(slide)|chordpro"> [innerHTML]="chordproFormatted(slide)|chordpro">
</div> </div>

View File

@ -1,53 +1,74 @@
<div <div
class="overlay" class="overlay"
[class.embedded]="embedded" [class.embedded]="embedded"
[style.--openlp-stage-font-scale]="fontScale" [style.--openlp-stage-font-scale]="fontScale">
>
<div class="overlay-content"> <div class="overlay-content">
<div class="tags"> <div class="tags">
<span *ngFor="let tag of tags" [class.active]="tag.active">{{ tag.text }}</span> @for (tag of tags; track tag) {
<span [class.active]="tag.active">{{ tag.text }}</span>
}
</div> </div>
<div class="container"> <div class="container">
<app-chord-view-item @if (currentSlides[activeSlide]?.chords) {
[slide]="currentSlides[activeSlide]" <app-chord-view-item
[active]="true" [slide]="currentSlides[activeSlide]"
*ngIf="currentSlides[activeSlide]?.chords; else elseSlideNoChords" [active]="true">
></app-chord-view-item> </app-chord-view-item>
<ng-template #elseSlideNoChords> }
<app-stage-view-item [slide]="currentSlides[activeSlide]" [active]="true"></app-stage-view-item> @else {
</ng-template> <app-stage-view-item
[slide]="currentSlides[activeSlide]"
[active]="true">
</app-stage-view-item>
}
<div class="nextSlides"> <div class="nextSlides">
<ng-container *ngFor="let slide of nextSlides; trackBy: trackByIndex"> @for (slide of nextSlides; track trackByIndex) {
<app-chord-view-item [slide]="slide" *ngIf="slide?.chords; else elseNextSlideNoChords"></app-chord-view-item> <ng-container>
<ng-template #elseNextSlideNoChords> @if (slide?.chords) {
<app-stage-view-item [slide]="slide"></app-stage-view-item> <app-chord-view-item
</ng-template> [slide]="slide">
</ng-container> </app-chord-view-item>
}
@else {
<app-stage-view-item
[slide]="slide">
</app-stage-view-item>
}
</ng-container>
}
</div> </div>
</div> </div>
</div> </div>
<div class="toolbar"> <div class="toolbar">
<a *ngIf="!embedded" @if (!embedded) {
mat-mini-fab color="" <a
class="back-button" mat-mini-fab color=""
routerLink="/" class="back-button"
matTooltip="{{ 'GO_BACK_TO_CONTROLLER' | translate }}"> routerLink="/"
<mat-icon>arrow_back</mat-icon> matTooltip="{{ 'GO_BACK_TO_CONTROLLER' | translate }}">
</a> <mat-icon>arrow_back</mat-icon>
</a>
}
<div class="transpose"> <div class="transpose">
<button mat-icon-button (click)="transposeDown()"> <button
mat-icon-button
(click)="transposeDown()">
<mat-icon>keyboard_arrow_down</mat-icon> <mat-icon>keyboard_arrow_down</mat-icon>
</button> </button>
<span>{{ transposeLevel }}</span> <span>{{ transposeLevel }}</span>
<button mat-icon-button (click)="transposeUp()"> <button
mat-icon-button
(click)="transposeUp()">
<mat-icon>keyboard_arrow_up</mat-icon> <mat-icon>keyboard_arrow_up</mat-icon>
</button> </button>
</div> </div>
<div *ngIf="!embedded && activeSlide+1 === currentSlides.length" @if (!embedded && activeSlide+1 === currentSlides.length) {
class="next-service-item" <div
matTooltip="{{ 'NEXT_ITEM' | translate }}"> class="next-service-item"
{{ nextServiceItemTitle }} matTooltip="{{ 'NEXT_ITEM' | translate }}">
</div> {{ nextServiceItemTitle }}
</div>
}
<div class="time">{{ (openlpService.getIsTwelveHourTime()) ? (time|date:'h:mm a') : (time|date:'HH:mm') }}</div> <div class="time">{{ (openlpService.getIsTwelveHourTime()) ? (time|date:'h:mm a') : (time|date:'HH:mm') }}</div>
</div> </div>
</div> </div>

View File

@ -1,84 +1,98 @@
<mat-action-list *ngIf="!display.bigDisplayButtons"> @if (display.bigDisplayButtons) {
<button mat-list-item <mat-grid-list
aria-labelledby="caption-blank" cols="2"
class="display-button" rowHeight="2:1">
(click)="setMode(DisplayMode.Blank)" <mat-grid-tile>
[disabled]="displayMode === DisplayMode.Blank"> <button
<mat-icon class="small-icon">videocam_off</mat-icon> mat-fab color="primary"
<span id="caption-blank" class="caption">{{ 'SHOW_BLACK' | translate }}</span> aria-labelledby="caption-blank"
</button> class="display-button"
<button mat-list-item (click)="setMode(displayMode.Blank)"
aria-labelledby="caption-theme" [disabled]="display.displayMode === displayMode.Blank">
class="display-button" <mat-icon class="big-icon">videocam_off</mat-icon>
(click)="setMode(DisplayMode.Theme)" </button>
[disabled]="displayMode === DisplayMode.Theme"> </mat-grid-tile>
<mat-icon class="small-icon">wallpaper</mat-icon> <mat-grid-tile>
<span id="caption-theme" class="caption">{{ 'SHOW_BACKGROUND' | translate }}</span> <div id="caption-blank" class="caption">{{ 'SHOW_BLACK' | translate }}</div>
</button> </mat-grid-tile>
<button mat-list-item <mat-grid-tile>
aria-labelledby="caption-desktop" <button
class="display-button" mat-fab color="primary"
(click)="setMode(DisplayMode.Desktop)" aria-labelledby="caption-theme"
[disabled]="displayMode === DisplayMode.Desktop"> class="display-button"
<mat-icon class="small-icon">desktop_windows</mat-icon> (click)="setMode(displayMode.Theme)"
<span id="caption-desktop" class="caption">{{ 'SHOW_DESKTOP' | translate }}</span> [disabled]="display.displayMode === displayMode.Theme">
</button> <mat-icon class="big-icon">wallpaper</mat-icon>
<button mat-list-item </button>
aria-labelledby="caption-presentation" </mat-grid-tile>
class="display-button" <mat-grid-tile>
(click)="setMode(DisplayMode.Presentation)" <div id="caption-theme" class="caption">{{ 'SHOW_BACKGROUND' | translate }}</div>
[disabled]="displayMode === DisplayMode.Presentation"> </mat-grid-tile>
<mat-icon class="small-icon">videocam</mat-icon> <mat-grid-tile>
<span id="caption-presentation" class="caption">{{ 'SHOW_PRESENTATION' | translate }}</span> <button
</button> mat-fab color="primary"
</mat-action-list> aria-labelledby="caption-desktop"
<mat-grid-list *ngIf="display.bigDisplayButtons" cols="2" rowHeight="2:1"> class="display-button"
<mat-grid-tile> (click)="setMode(displayMode.Desktop)"
<button mat-fab color="primary" [disabled]="display.displayMode === displayMode.Desktop">
<mat-icon class="big-icon">desktop_windows</mat-icon>
</button>
</mat-grid-tile>
<mat-grid-tile>
<div id="caption-desktop" class="caption">{{ 'SHOW_DESKTOP' | translate }}</div>
</mat-grid-tile>
<mat-grid-tile>
<button
mat-fab color="primary"
aria-labelledby="caption-presentation"
class="display-button"
(click)="setMode(displayMode.Presentation)"
[disabled]="display.displayMode === displayMode.Presentation">
<mat-icon class="big-icon">videocam</mat-icon>
</button>
</mat-grid-tile>
<mat-grid-tile>
<div id="caption-presentation" class="caption">{{ 'SHOW_PRESENTATION' | translate }}</div>
</mat-grid-tile>
</mat-grid-list>
}
@else {
<mat-action-list>
<button
mat-list-item
aria-labelledby="caption-blank" aria-labelledby="caption-blank"
class="display-button" class="display-button"
(click)="setMode(DisplayMode.Blank)" (click)="setMode(displayMode.Blank)"
[disabled]="displayMode === DisplayMode.Blank"> [disabled]="display.displayMode === displayMode.Blank">
<mat-icon class="big-icon">videocam_off</mat-icon> <mat-icon class="small-icon">videocam_off</mat-icon>
<span id="caption-blank" class="caption">{{ 'SHOW_BLACK' | translate }}</span>
</button> </button>
</mat-grid-tile> <button
<mat-grid-tile> mat-list-item
<div id="caption-blank" class="caption">{{ 'SHOW_BLACK' | translate }}</div>
</mat-grid-tile>
<mat-grid-tile>
<button mat-fab color="primary"
aria-labelledby="caption-theme" aria-labelledby="caption-theme"
class="display-button" class="display-button"
(click)="setMode(DisplayMode.Theme)" (click)="setMode(displayMode.Theme)"
[disabled]="displayMode === DisplayMode.Theme"> [disabled]="display.displayMode === displayMode.Theme">
<mat-icon class="big-icon">wallpaper</mat-icon> <mat-icon class="small-icon">wallpaper</mat-icon>
<span id="caption-theme" class="caption">{{ 'SHOW_BACKGROUND' | translate }}</span>
</button> </button>
</mat-grid-tile> <button
<mat-grid-tile> mat-list-item
<div id="caption-theme" class="caption">{{ 'SHOW_BACKGROUND' | translate }}</div>
</mat-grid-tile>
<mat-grid-tile>
<button mat-fab color="primary"
aria-labelledby="caption-desktop" aria-labelledby="caption-desktop"
class="display-button" class="display-button"
(click)="setMode(DisplayMode.Desktop)" (click)="setMode(displayMode.Desktop)"
[disabled]="displayMode === DisplayMode.Desktop"> [disabled]="display.displayMode === displayMode.Desktop">
<mat-icon class="big-icon">desktop_windows</mat-icon> <mat-icon class="small-icon">desktop_windows</mat-icon>
<span id="caption-desktop" class="caption">{{ 'SHOW_DESKTOP' | translate }}</span>
</button> </button>
</mat-grid-tile> <button
<mat-grid-tile> mat-list-item
<div id="caption-desktop" class="caption">{{ 'SHOW_DESKTOP' | translate }}</div>
</mat-grid-tile>
<mat-grid-tile>
<button mat-fab color="primary"
aria-labelledby="caption-presentation" aria-labelledby="caption-presentation"
class="display-button" class="display-button"
(click)="setMode(DisplayMode.Presentation)" (click)="setMode(displayMode.Presentation)"
[disabled]="displayMode === DisplayMode.Presentation"> [disabled]="display.displayMode === displayMode.Presentation">
<mat-icon class="big-icon">videocam</mat-icon> <mat-icon class="small-icon">videocam</mat-icon>
<span id="caption-presentation" class="caption">{{ 'SHOW_PRESENTATION' | translate }}</span>
</button> </button>
</mat-grid-tile> </mat-action-list>
<mat-grid-tile> }
<div id="caption-presentation" class="caption">{{ 'SHOW_PRESENTATION' | translate }}</div>
</mat-grid-tile>
</mat-grid-list>

View File

@ -5,11 +5,11 @@ import { Display, DisplayMode } from 'src/app/responses';
@Component({ @Component({
selector: 'openlp-display-mode-sheet', selector: 'openlp-display-mode-sheet',
templateUrl: 'display-mode-selector.component.html', templateUrl: 'display-mode-selector.component.html',
styleUrls: ['./display-mode-selector.component.scss'] styleUrl: './display-mode-selector.component.scss'
}) })
export class DisplayModeSelectorComponent { export class DisplayModeSelectorComponent {
// Make DisplayMode enum visible in HTML template. // Make DisplayMode enum visible in HTML template.
DisplayMode = DisplayMode; displayMode = DisplayMode;
constructor( constructor(
private bottomSheetRef: MatBottomSheetRef<DisplayModeSelectorComponent>, private bottomSheetRef: MatBottomSheetRef<DisplayModeSelectorComponent>,

View File

@ -3,14 +3,16 @@
<form #loginForm="ngForm"> <form #loginForm="ngForm">
<div mat-dialog-content> <div mat-dialog-content>
<mat-form-field> <mat-form-field>
<input matInput <input
matInput
placeholder="{{ 'USER_NAME' | translate }}" placeholder="{{ 'USER_NAME' | translate }}"
[(ngModel)]="username" [(ngModel)]="username"
name="username" name="username"
required> required>
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field>
<input matInput <input
matInput
placeholder="{{ 'PASSWORD' | translate }}" placeholder="{{ 'PASSWORD' | translate }}"
type="password" type="password"
[(ngModel)]="password" [(ngModel)]="password"

View File

@ -6,7 +6,7 @@ import { OpenLPService } from '../../openlp.service';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
templateUrl: './login.component.html', templateUrl: './login.component.html',
styleUrls: ['./login.component.scss'] styleUrl: './login.component.scss'
}) })
export class LoginComponent implements OnInit { export class LoginComponent implements OnInit {
username: string; username: string;

View File

@ -1,6 +1,9 @@
<div class="lower-third"> <div class="lower-third">
<div class="slide"> <div class="slide">
<div class="slide-item" [style.font-size]="fontSize" [style.font-family]="fontFamily"> <div
class="slide-item"
[style.font-size]="fontSize"
[style.font-family]="fontFamily">
{{currentSlides[activeSlide]?.text}} {{currentSlides[activeSlide]?.text}}
</div> </div>
</div> </div>

View File

@ -8,7 +8,7 @@ import { ServiceItem, Slide } from '../../responses';
@Component({ @Component({
selector: 'app-lower-third', selector: 'app-lower-third',
templateUrl: './lower-third.component.html', templateUrl: './lower-third.component.html',
styleUrls: ['./lower-third.component.scss'], styleUrl: './lower-third.component.scss',
encapsulation: ViewEncapsulation.None encapsulation: ViewEncapsulation.None
}) })
export class LowerThirdComponent implements OnInit, OnDestroy { export class LowerThirdComponent implements OnInit, OnDestroy {

View File

@ -1,8 +1,16 @@
<mat-form-field > <mat-form-field >
<mat-select [(ngModel)]="selectedSearchOption" (selectionChange)="setSearchOption($event)" name="selectedSearchOption" [placeholder]="searchOptionsTitle"> <mat-select
<mat-option *ngFor="let option of searchOptions" name="searchOptions" [value]="option"> [(ngModel)]="selectedSearchOption"
{{option}} (selectionChange)="setSearchOption($event)"
</mat-option> name="selectedSearchOption"
[placeholder]="searchOptionsTitle">
@for (option of searchOptions; track option) {
<mat-option
name="searchOptions"
[value]="option">
{{ option }}
</mat-option>
}
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<br> <br>

View File

@ -5,7 +5,7 @@ import { OpenLPService } from '../../../openlp.service';
@Component({ @Component({
selector: 'openlp-search-options', selector: 'openlp-search-options',
templateUrl: './search-options.component.html', templateUrl: './search-options.component.html',
styleUrls: ['./search-options.component.scss'], styleUrl: './search-options.component.scss',
providers: [OpenLPService] providers: [OpenLPService]
}) })
export class SearchOptionsComponent { export class SearchOptionsComponent {

View File

@ -1,10 +1,18 @@
<h3>Search</h3> <h3>Search</h3>
<form #searchForm="ngForm"> <form #searchForm="ngForm">
<mat-form-field> <mat-form-field>
<mat-select [(ngModel)]="selectedPlugin" (selectionChange)="onPluginChange()" name="selectedPlugin" placeholder="Search for:"> <mat-select
<mat-option *ngFor="let plugin of searchPlugins" name="searchPlugins" [value]="plugin.key"> [(ngModel)]="selectedPlugin"
{{plugin.name}} (selectionChange)="onPluginChange()"
</mat-option> name="selectedPlugin"
placeholder="Search for:">
@for (plugin of searchPlugins; track plugin.name) {
<mat-option
name="searchPlugins"
[value]="plugin.key">
{{ plugin.name }}
</mat-option>
}
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<br> <br>
@ -12,36 +20,53 @@
<openlp-search-options></openlp-search-options> <openlp-search-options></openlp-search-options>
</div> </div>
<mat-form-field> <mat-form-field>
<input matInput [(ngModel)]="searchText" name="searchText" placeholder="{{ 'SEARCH_TEXT' | translate }}" required> <input
matInput
[(ngModel)]="searchText"
name="searchText"
placeholder="{{ 'SEARCH_TEXT' | translate }}"
required>
</mat-form-field> </mat-form-field>
<br> <br>
<button mat-raised-button id="searchButton" <button
mat-raised-button
id="searchButton"
color="primary" color="primary"
[disabled]="!searchForm.form.valid" [disabled]="!searchForm.form.valid"
(click)="onSubmit()"> (click)="onSubmit()">
{{ 'SEARCH' | translate }} {{ 'SEARCH' | translate }}
</button> </button>
</form> </form>
<div *ngIf="searchResults"> @if (searchResults) {
<h3>{{ 'SEARCH_RESULTS' | translate }}:</h3> <div>
<div *ngIf="!searchResults.length"> <h3>{{ 'SEARCH_RESULTS' | translate }}:</h3>
{{ 'NO_SEARCH_RESULTS' | translate }}... @if (searchResults.length) {
<table>
@for (item of searchResults; track item) {
<tr>
<td>{{ item[1] }}</td>
<td>
<button
mat-button color="primary"
(click)="addToService(item[0])">
{{ 'ADD_TO_SERVICE' | translate }}
</button>
</td>
<td>
<button
mat-button color="accent"
(click)="sendLive(item[0])">
{{ 'SEND_LIVE' | translate }}
</button>
</td>
</tr>
}
</table>
}
@else {
<div>
{{ 'NO_SEARCH_RESULTS' | translate }}...
</div>
}
</div> </div>
<table *ngIf="searchResults.length"> }
<tr *ngFor="let item of searchResults">
<td>{{item[1]}}</td>
<td>
<button mat-button color="primary"
(click)="addToService(item[0])">
{{ 'ADD_TO_SERVICE' | translate }}
</button>
</td>
<td>
<button mat-button color="accent"
(click)="sendLive(item[0])">
{{ 'SEND_LIVE' | translate }}
</button>
</td>
</tr>
</table>
</div>

View File

@ -1,4 +1,5 @@
import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core'; import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { OpenLPService } from '../../openlp.service'; import { OpenLPService } from '../../openlp.service';
import { PageTitleService } from '../../page-title.service'; import { PageTitleService } from '../../page-title.service';
@ -8,7 +9,7 @@ import { SearchOptionsComponent } from './search-options/search-options.componen
@Component({ @Component({
selector: 'openlp-search', selector: 'openlp-search',
templateUrl: './search.component.html', templateUrl: './search.component.html',
styleUrls: ['./search.component.scss'], styleUrl: './search.component.scss',
providers: [OpenLPService] providers: [OpenLPService]
}) })
export class SearchComponent implements OnInit, AfterViewInit { export class SearchComponent implements OnInit, AfterViewInit {
@ -20,9 +21,14 @@ export class SearchComponent implements OnInit, AfterViewInit {
public displaySearchOptions = false; public displaySearchOptions = false;
@ViewChild(SearchOptionsComponent, {static: false}) searchOptions: SearchOptionsComponent; @ViewChild(SearchOptionsComponent, {static: false}) searchOptions: SearchOptionsComponent;
constructor(private pageTitleService: PageTitleService, private openlpService: OpenLPService, constructor(
private cdr: ChangeDetectorRef) { private pageTitleService: PageTitleService,
pageTitleService.changePageTitle('Search'); private openlpService: OpenLPService,
private cdr: ChangeDetectorRef,
private translateService: TranslateService) {
this.translateService.get('SEARCH').subscribe(res => {
this.pageTitleService.changePageTitle(res);
});
} }
onSubmit() { onSubmit() {

View File

@ -1,4 +1,7 @@
<mat-card (click)="onItemSelected(item)" class="service-item no-select" [class.selected]="selected"> <mat-card
(click)="onItemSelected(item)"
class="service-item no-select"
[class.selected]="selected">
<mat-card-content> <mat-card-content>
<mat-icon>{{ getIcon(item) }}</mat-icon> {{ item.title }} <mat-icon>{{ getIcon(item) }}</mat-icon> {{ item.title }}
</mat-card-content> </mat-card-content>

View File

@ -5,7 +5,7 @@ import { ServiceItem } from '../../../responses';
@Component({ @Component({
selector: 'openlp-service-item', selector: 'openlp-service-item',
templateUrl: './service-item.component.html', templateUrl: './service-item.component.html',
styleUrls: ['./service-item.component.scss'], styleUrl: './service-item.component.scss',
changeDetection: ChangeDetectionStrategy.OnPush changeDetection: ChangeDetectionStrategy.OnPush
}) })

View File

@ -1,22 +1,29 @@
<ng-container *ngIf="items?.length; else noServiceItems"> @if (items?.length) {
<openlp-service-item <ng-container>
*ngFor="let item of items" @for (item of items; track item) {
[item]="item" <openlp-service-item
[selected]="item.selected" [item]="item"
(selectItem)="onItemSelected($event)" [selected]="item.selected"
[tabindex]="item.id"></openlp-service-item> (selectItem)="onItemSelected($event)"
</ng-container> [tabindex]="item.id">
<ng-template #noServiceItems> </openlp-service-item>
<div class="no-items" *ngIf="!loading"> }
</ng-container>
}
@else if (!loading) {
<div class="no-items">
<div class="no-items-title"> <div class="no-items-title">
<span class="material-icons icon">info</span> <span class="material-icons icon">info</span>
{{ 'NO_SERVICE_ITEMS' | translate }}. {{ 'NO_SERVICE_ITEMS' | translate }}.
</div> </div>
<div class="no-items-actions"> <div class="no-items-actions">
<a routerLink="/search" mat-stroked-button color="primary" size="small"> <a
routerLink="/search"
mat-stroked-button color="primary"
size="small">
<span class="material-icons">add</span> <span class="material-icons">add</span>
{{ 'ADD_ITEM' | translate }} {{ 'ADD_ITEM' | translate }}
</a> </a>
</div> </div>
</div> </div>
</ng-template> }

View File

@ -1 +1,3 @@
<openlp-service-list (itemSelected)="this.onItemSelected($event)"></openlp-service-list> <openlp-service-list
(itemSelected)="this.onItemSelected($event)">
</openlp-service-list>

View File

@ -1,5 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { OpenLPService } from '../../openlp.service'; import { OpenLPService } from '../../openlp.service';
import { PageTitleService } from '../../page-title.service'; import { PageTitleService } from '../../page-title.service';
@ -8,7 +9,7 @@ import { ServiceItem } from '../../responses';
@Component({ @Component({
selector: 'openlp-service', selector: 'openlp-service',
templateUrl: './service.component.html', templateUrl: './service.component.html',
styleUrls: ['./service.component.scss'], styleUrl: './service.component.scss',
}) })
export class ServiceComponent { export class ServiceComponent {
@ -19,8 +20,13 @@ export class ServiceComponent {
} }
} }
constructor(protected pageTitleService: PageTitleService, protected openlpService: OpenLPService, constructor(
protected router: Router) { protected pageTitleService: PageTitleService,
pageTitleService.changePageTitle('Service'); protected openlpService: OpenLPService,
protected router: Router,
private translateService: TranslateService) {
this.translateService.get('SERVICE').subscribe(res => {
this.pageTitleService.changePageTitle(res);
});
} }
} }

View File

@ -1,64 +1,70 @@
<div class="settings-panel"> <div class="settings-panel">
<mat-card> <mat-card>
<mat-card-header> <mat-card-header>
{{ 'USER_INTERFACE' | translate }} {{ 'USER_INTERFACE' | translate }}
</mat-card-header> </mat-card-header>
<mat-card-content> <mat-card-content>
<div class="settings-item"> <div class="settings-item">
<mat-slide-toggle <mat-slide-toggle
color="primary" color="primary"
[checked]="settings.fastSwitching" [checked]="settings.fastSwitching"
(change)="setSetting('fastSwitching', $event.checked)"> (change)="setSetting('fastSwitching', $event.checked)">
{{ 'ENABLE_FAST_SWITCHING_PANEL' | translate }} {{ 'ENABLE_FAST_SWITCHING_PANEL' | translate }}
</mat-slide-toggle> </mat-slide-toggle>
</div> </div>
<div class="settings-item"> <div class="settings-item">
<mat-slide-toggle <mat-slide-toggle
color="primary" color="primary"
[checked]="settings.bigDisplayButtons" [checked]="settings.bigDisplayButtons"
(change)="setSetting('bigDisplayButtons', $event.checked)"> (change)="setSetting('bigDisplayButtons', $event.checked)">
{{ 'ENABLE_BIG_DISPLAY_BUTTONS' | translate }} {{ 'ENABLE_BIG_DISPLAY_BUTTONS' | translate }}
</mat-slide-toggle> </mat-slide-toggle>
</div> </div>
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
<mat-card> <mat-card>
<mat-card-header> <mat-card-header>
{{ 'STAGE_AND_CHORDS_APPEARANCE' | translate }} {{ 'STAGE_AND_CHORDS_APPEARANCE' | translate }}
</mat-card-header> </mat-card-header>
<mat-card-content> <mat-card-content>
<mat-tab-group> <mat-tab-group>
<mat-tab label="{{ 'STAGE' | translate }}"> <mat-tab label="{{ 'STAGE' | translate }}">
<ng-template matTabContent> <ng-template matTabContent>
<ng-container> <ng-container>
<openlp-stage-chord-preview stageType="stage"></openlp-stage-chord-preview> <openlp-stage-chord-preview stageType="stage">
<ng-container *ngTemplateOutlet="stageSettings; context: {prefix: 'stage'}"></ng-container> </openlp-stage-chord-preview>
</ng-container> <ng-container *ngTemplateOutlet="stageSettings; context: {prefix: 'stage'}">
</ng-template> </ng-container>
</mat-tab> </ng-container>
<mat-tab label="{{ 'CHORDS' | translate }}"> </ng-template>
<ng-template matTabContent> </mat-tab>
<openlp-stage-chord-preview stageType="chords"></openlp-stage-chord-preview> <mat-tab label="{{ 'CHORDS' | translate }}">
<ng-container *ngTemplateOutlet="stageSettings; context: {prefix: 'chords'}"></ng-container> <ng-template matTabContent>
</ng-template> <openlp-stage-chord-preview stageType="chords">
</mat-tab> </openlp-stage-chord-preview>
</mat-tab-group> <ng-container *ngTemplateOutlet="stageSettings; context: {prefix: 'chords'}">
</mat-card-content> </ng-container>
</ng-template>
</mat-tab>
</mat-tab-group>
</mat-card-content>
</mat-card> </mat-card>
</div> </div>
<ng-template #stageSettings let-prefix="prefix"> <ng-template
<div class="stage-settings"> #stageSettings
<div class="settings-item"> let-prefix="prefix">
<label>{{ 'FONT_SCALE' | translate }}: {{settings[prefix + 'FontScale'] ?? 100}}%</label> <div class="stage-settings">
<mat-slider <div class="settings-item">
min="25" <label>{{ 'FONT_SCALE' | translate }}: {{settings[prefix + 'FontScale'] ?? 100}}%</label>
max="200" <mat-slider
step="6.25"> min="25"
<input max="200"
matSliderThumb step="6.25">
[value]="settings[prefix + 'FontScale']" <input
(valueChange)="setSetting(prefix + 'FontScale', $event)"> matSliderThumb
</mat-slider> [value]="settings[prefix + 'FontScale']"
</div> (valueChange)="setSetting(prefix + 'FontScale', $event)">
</mat-slider>
</div> </div>
</div>
</ng-template> </ng-template>

View File

@ -1,4 +1,5 @@
import { Component, OnDestroy } from '@angular/core'; import { Component, OnDestroy } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { OpenLPService } from '../../openlp.service'; import { OpenLPService } from '../../openlp.service';
import { PageTitleService } from '../../page-title.service'; import { PageTitleService } from '../../page-title.service';
@ -6,17 +7,19 @@ import { SettingsProperties, SettingsPropertiesItem, SettingsService } from '../
@Component({ @Component({
selector: 'openlp-settings', selector: 'openlp-settings',
templateUrl: `./settings.component.html`, templateUrl: './settings.component.html',
styleUrls: [`./settings.component.scss`] styleUrl: './settings.component.scss'
}) })
export class SettingsComponent implements OnDestroy { export class SettingsComponent implements OnDestroy {
constructor( constructor(
protected pageTitleService: PageTitleService, protected pageTitleService: PageTitleService,
protected openlpService: OpenLPService, protected openlpService: OpenLPService,
protected settingsService: SettingsService, protected settingsService: SettingsService,
) { private translateService: TranslateService) {
this.settingsSubscription$ = settingsService.settingChanged$.subscribe(this._settingChanged); this.settingsSubscription$ = settingsService.settingChanged$.subscribe(this._settingChanged);
pageTitleService.changePageTitle('Settings'); this.translateService.get('SETTINGS').subscribe(res => {
this.pageTitleService.changePageTitle(res);
});
} }
protected settingsSubscription$: Subscription; protected settingsSubscription$: Subscription;
@ -36,5 +39,4 @@ export class SettingsComponent implements OnDestroy {
ngOnDestroy(): void { ngOnDestroy(): void {
this.settingsSubscription$.unsubscribe(); this.settingsSubscription$.unsubscribe();
} }
} }

View File

@ -1,14 +1,18 @@
<div class="stage-preview-container" #stageViewContainer> <div
class="stage-preview-container"
#stageViewContainer>
@if (stageType === 'stage') {
<app-stage-view <app-stage-view
#stageView #stageView
*ngIf="stageType === 'stage'" [embedded]="true"
[embedded]="true" [style.--openlp-stage-font-scale]="fontScale">
[style.--openlp-stage-font-scale]="fontScale" </app-stage-view>
></app-stage-view> }
@else if (stageType === 'chords') {
<app-chord-view <app-chord-view
#chordsView #chordsView
*ngIf="stageType === 'chords'" [embedded]="true"
[embedded]="true" [style.--openlp-stage-font-scale]="fontScale">
[style.--openlp-stage-font-scale]="fontScale" </app-chord-view>
></app-chord-view> }
</div> </div>

View File

@ -17,7 +17,7 @@ import { SettingsProperties, SettingsService } from 'src/app/settings.service';
@Component({ @Component({
selector: 'openlp-stage-chord-preview', selector: 'openlp-stage-chord-preview',
templateUrl: './stage-chord-preview.component.html', templateUrl: './stage-chord-preview.component.html',
styleUrls: ['./stage-chord-preview.component.scss'], styleUrl: './stage-chord-preview.component.scss',
}) })
export class StageChordPreviewComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges { export class StageChordPreviewComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
constructor( constructor(

View File

@ -1,14 +1,20 @@
<mat-card class="slide no-select" mat-list-item (click)="onSlideSelected(slide)" [class.selected]="selected"> <mat-card
class="slide no-select"
mat-list-item
(click)="onSlideSelected(slide)"
[class.selected]="selected">
<mat-card-content> <mat-card-content>
<div class="verse-tag">{{ slide?.tag }}</div> <div class="verse-tag">{{ slide?.tag }}</div>
<div *ngIf="slide?.img; else onlySlideText" class="verse-img-container"> @if (slide?.img) {
<img src="{{ slide?.img }}" /> <div class="verse-img-container">
<div class="img-verse-text"> <img src="{{ slide?.img }}" />
{{ slide?.text }} <div class="img-verse-text">
{{ slide?.text }}
</div>
</div> </div>
</div> }
<ng-template #onlySlideText> @else {
<div class="verse-text">{{ slide?.text }}</div> <div class="verse-text">{{ slide?.text }}</div>
</ng-template> }
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>

View File

@ -4,7 +4,7 @@ import { Slide } from '../../../responses';
@Component({ @Component({
selector: 'openlp-slide-item', selector: 'openlp-slide-item',
templateUrl: './slide-item.component.html', templateUrl: './slide-item.component.html',
styleUrls: ['./slide-item.component.scss'], styleUrl: './slide-item.component.scss',
changeDetection: ChangeDetectionStrategy.OnPush changeDetection: ChangeDetectionStrategy.OnPush
}) })

View File

@ -1,23 +1,32 @@
<ng-container *ngIf="slides?.length; else noSlideItems"> @if (slides?.length) {
<openlp-slide-item <ng-container>
*ngFor="let slide of slides; let index = index" @for (slide of slides; track slide; let index = $index) {
[slide]="slide" <openlp-slide-item
[tabindex]="counter" [slide]="slide"
[selected]="slide.selected" [tabindex]="index"
(selectSlide)="onSlideSelected($event, index)" [selected]="slide.selected"
></openlp-slide-item> (selectSlide)="onSlideSelected($event, index)">
</ng-container> </openlp-slide-item>
<ng-template #noSlideItems> }
<div class="no-items" *ngIf="!loading"> </ng-container>
<div class="no-items-title"> }
<span class="material-icons icon">info</span> @else {
{{ 'NO_SLIDE_ITEMS' | translate }}. @if (!loading) {
<div class="no-items">
<div class="no-items-title">
<span class="material-icons icon">info</span>
{{ 'NO_SLIDE_ITEMS' | translate }}.
</div>
<div class="no-items-actions">
<a
routerLink="/search"
mat-stroked-button
color="primary"
size="small">
<span class="material-icons">add</span>
{{ 'ADD_ITEM_TO_SERVICE' | translate }}
</a>
</div>
</div> </div>
<div class="no-items-actions"> }
<a routerLink="/search" mat-stroked-button color="primary" size="small"> }
<span class="material-icons">add</span>
{{ 'ADD_ITEM_TO_SERVICE' | translate }}
</a>
</div>
</div>
</ng-template>

View File

@ -1 +1,2 @@
<openlp-slide-list (slideSelected)="onSlideSelected($event)"></openlp-slide-list> <openlp-slide-list (slideSelected)="onSlideSelected($event)">
</openlp-slide-list>

View File

@ -1,4 +1,5 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { OpenLPService } from '../../openlp.service'; import { OpenLPService } from '../../openlp.service';
import { PageTitleService } from '../../page-title.service'; import { PageTitleService } from '../../page-title.service';
@ -7,12 +8,17 @@ import { SlideListItem } from './slide-list/slide-list.component';
@Component({ @Component({
selector: 'openlp-slides', selector: 'openlp-slides',
templateUrl: './slides.component.html', templateUrl: './slides.component.html',
styleUrls: ['./slides.component.scss'], styleUrl: './slides.component.scss',
}) })
export class SlidesComponent { export class SlidesComponent {
constructor(protected pageTitleService: PageTitleService, protected openlpService: OpenLPService) { constructor(
pageTitleService.changePageTitle('Slides'); protected pageTitleService: PageTitleService,
protected openlpService: OpenLPService,
private translateService: TranslateService) {
this.translateService.get('SLIDES').subscribe(res => {
this.pageTitleService.changePageTitle(res);
});
} }
onSlideSelected(item: SlideListItem) { onSlideSelected(item: SlideListItem) {

View File

@ -1,14 +1,21 @@
<div <div
class="slide" class="slide"
[class.mat-headline-2]="active" [class.mat-headline-2]="active"
[class.currentSlide]="active" [class.currentSlide]="active"
[class.mat-headline-4]="!active" [class.mat-headline-4]="!active"
[class.first]="!active && slide.first_slide_of_tag"> [class.first]="!active && slide.first_slide_of_tag">
<ng-container *ngIf="!(slide?.img); else elseImage"> @if (slide?.img) {
{{slide?.text}} <img
src="{{slide?.img}}"
[class.active-slide-img]="active"
[class.next-slides-img]="!active"/>
<div
[class.active-slide-img-text]="active"
[class.next-slides-text]="!active">{{ slide?.text }}</div>
}
@else {
<ng-container>
{{ slide?.text }}
</ng-container> </ng-container>
<ng-template #elseImage> }
<img src="{{slide?.img}}" [class.active-slide-img]="active" [class.next-slides-img]="!active"/>
<div [class.active-slide-img-text]="active" [class.next-slides-text]="!active">{{ slide?.text }}</div>
</ng-template>
</div> </div>

View File

@ -4,49 +4,67 @@
[style.--openlp-stage-font-scale]="fontScale"> [style.--openlp-stage-font-scale]="fontScale">
<div class="overlay-content"> <div class="overlay-content">
<div class="tags"> <div class="tags">
<span *ngFor="let tag of tags" [class.active]="tag.active">{{ tag.text }}</span> @for (tag of tags; track tag) {
<span [class.active]="tag.active">{{ tag.text }}</span>
}
</div> </div>
<div class="container"> <div class="container">
<app-stage-view-item [slide]="currentSlides[activeSlide]" [active]="true"></app-stage-view-item> <app-stage-view-item
[slide]="currentSlides[activeSlide]"
[active]="true">
</app-stage-view-item>
<div class="nextSlides"> <div class="nextSlides">
<app-stage-view-item [slide]="slide" *ngFor="let slide of nextSlides; trackBy: trackByIndex"></app-stage-view-item> @for (slide of nextSlides; track trackByIndex) {
<app-stage-view-item [slide]="slide">
</app-stage-view-item>
}
</div> </div>
</div> </div>
</div> </div>
<div class="toolbar"> <div class="toolbar">
<a *ngIf="!embedded" @if (!embedded) {
class="back-button" <a
mat-mini-fab color="" class="back-button"
routerLink="/" mat-mini-fab color=""
matTooltip="{{ 'GO_BACK_TO_CONTROLLER' | translate }}"> routerLink="/"
<mat-icon>arrow_back</mat-icon> matTooltip="{{ 'GO_BACK_TO_CONTROLLER' | translate }}">
</a> <mat-icon>arrow_back</mat-icon>
<button *ngIf="showNotes" </a>
mat-mini-fab }
class="show-notes" @if (showNotes) {
matTooltip="{{ 'HIDE_NOTES' | translate }}" <button
[color]="primary" mat-mini-fab
[class.show-notes-disabled]="false" class="show-notes"
(click)="showNotes = false"> matTooltip="{{ 'HIDE_NOTES' | translate }}"
<mat-icon>sticky_note_2</mat-icon> color="primary"
</button> [class.show-notes-disabled]="false"
<button *ngIf="!showNotes" (click)="showNotes = false">
mat-mini-fab <mat-icon>sticky_note_2</mat-icon>
class="show-notes" </button>
matTooltip="{{ 'SHOW_NOTES' | translate }}" }
[color]="" @else {
[class.show-notes-disabled]="true" <button
(click)="showNotes = true"> mat-mini-fab
<mat-icon>sticky_note_2</mat-icon> class="show-notes"
</button> matTooltip="{{ 'SHOW_NOTES' | translate }}"
<div *ngIf="!embedded && activeSlide+1 === currentSlides.length" color=""
class="next-service-item" [class.show-notes-disabled]="true"
matTooltip="{{ 'NEXT_ITEM' | translate }}"> (click)="showNotes = true">
{{ nextServiceItemTitle }} <mat-icon>sticky_note_2</mat-icon>
</div> </button>
}
@if (!embedded && activeSlide+1 === currentSlides.length) {
<div
class="next-service-item"
matTooltip="{{ 'NEXT_ITEM' | translate }}">
{{ nextServiceItemTitle }}
</div>
}
<div class="time">{{ (openlpService.getIsTwelveHourTime()) ? (time|date:'h:mm a') : (time|date:'HH:mm') }}</div> <div class="time">{{ (openlpService.getIsTwelveHourTime()) ? (time|date:'h:mm a') : (time|date:'HH:mm') }}</div>
</div> </div>
<div class="sidebar" *ngIf="(showNotes || embedded) && notes"> @if ((showNotes || embedded) && notes) {
<div class="notes" [innerHTML]="notes|nl2br"></div> <div class="sidebar">
</div> <div class="notes" [innerHTML]="notes|nl2br"></div>
</div>
}
</div> </div>

View File

@ -97,7 +97,7 @@ export class StageViewComponent implements OnInit, OnDestroy {
} }
setNewSlides(slides: Slide[], _currentSlide: number): void { /* eslint-disable-line @typescript-eslint/no-unused-vars */ setNewSlides(slides: Slide[], _currentSlide: number): void { /* eslint-disable-line @typescript-eslint/no-unused-vars */
if (slides.length === 0) { if ((slides?.length ?? 0) === 0) {
return; return;
} }
this.currentSlides = slides; this.currentSlides = slides;

View File

@ -10,17 +10,26 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
</div> </div>
<div class="theme-container content" *ngIf="isThemeLevelSupported()"> @if (isThemeLevelSupported()) {
<div *ngFor="let theme of themeList;"> <div class="theme-container content">
<mat-card class="theme-card" (click)='setTheme(theme.name)' [class.selected]="theme.selected"> @for (theme of themeList; track theme) {
<mat-card-content> <div>
<img [src]="theme.thumbnail"/> <mat-card
<div class="theme-title">{{ theme.name }}</div> class="theme-card"
</mat-card-content> (click)='setTheme(theme.name)'
</mat-card> [class.selected]="theme.selected">
<mat-card-content>
<img [src]="theme.thumbnail"/>
<div class="theme-title">{{ theme.name }}</div>
</mat-card-content>
</mat-card>
</div>
}
</div> </div>
</div> }
<mat-error *ngIf="!isThemeLevelSupported()"> @else {
{{ 'SONG_LEVEL_THEME_CHANGING_NOT_SUPPORTED' | translate }} <mat-error>
</mat-error> {{ 'SONG_LEVEL_THEME_CHANGING_NOT_SUPPORTED' | translate }}
</mat-error>
}
</form> </form>

View File

@ -1,11 +1,14 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { OpenLPService } from '../../openlp.service'; import { OpenLPService } from '../../openlp.service';
import { PageTitleService } from '../../page-title.service'; import { PageTitleService } from '../../page-title.service';
import { Theme } from '../../responses';
@Component({ @Component({
selector: 'openlp-themes', selector: 'openlp-themes',
templateUrl: './themes.component.html', templateUrl: './themes.component.html',
styleUrls: ['./themes.component.scss'], styleUrl: './themes.component.scss',
providers: [OpenLPService] providers: [OpenLPService]
}) })
export class ThemesComponent implements OnInit { export class ThemesComponent implements OnInit {
@ -13,8 +16,13 @@ export class ThemesComponent implements OnInit {
private _themeList = []; private _themeList = [];
private _themeLevel = null; private _themeLevel = null;
constructor(private pageTitleService: PageTitleService, private openlpService: OpenLPService) { constructor(
pageTitleService.changePageTitle('Themes'); private pageTitleService: PageTitleService,
private openlpService: OpenLPService,
private translateService: TranslateService) {
this.translateService.get('THEMES').subscribe(res => {
this.pageTitleService.changePageTitle(res);
});
} }
ngOnInit() { ngOnInit() {
@ -22,7 +30,7 @@ export class ThemesComponent implements OnInit {
this.getThemes(); this.getThemes();
} }
get themeList(): Array<string> { get themeList(): Array<Theme> {
return this._themeList; return this._themeList;
} }

View File

@ -63,8 +63,9 @@ export interface ServiceItem {
} }
export interface Theme { export interface Theme {
selected: boolean;
name: string; name: string;
selected: boolean;
thumbnail: object;
} }
export interface Language { export interface Language {

View File

@ -4,6 +4,7 @@
"ADD_ITEM_TO_SERVICE": "Add Item to Service", "ADD_ITEM_TO_SERVICE": "Add Item to Service",
"ADD_TO_SERVICE": "Add to Service", "ADD_TO_SERVICE": "Add to Service",
"ALERT": "Alert", "ALERT": "Alert",
"ALERT_SUBMITTED": "Alert Submitted",
"ALERTS": "Alerts", "ALERTS": "Alerts",
"CHANGE_DISPLAY_MODE": "Change Display Mode", "CHANGE_DISPLAY_MODE": "Change Display Mode",
"CHORD_VIEW": "Chord View", "CHORD_VIEW": "Chord View",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Voeg Item By Diens", "ADD_ITEM_TO_SERVICE": "Voeg Item By Diens",
"ADD_TO_SERVICE": "Voeg By Diens", "ADD_TO_SERVICE": "Voeg By Diens",
"ALERT": "Waarskuwing", "ALERT": "Waarskuwing",
"ALERT_SUBMITTED": "Waarskuwing Ingedien",
"ALERTS": "Waarskuwings", "ALERTS": "Waarskuwings",
"CHANGE_DISPLAY_MODE": "Verander Vertoonmodus", "CHANGE_DISPLAY_MODE": "Verander Vertoonmodus",
"CHORD_VIEW": "Akkoordaansig", "CHORD_VIEW": "Akkoordaansig",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Добави елемент към услугата", "ADD_ITEM_TO_SERVICE": "Добави елемент към услугата",
"ADD_TO_SERVICE": "Добави към услугата", "ADD_TO_SERVICE": "Добави към услугата",
"ALERT": "Предупреждение", "ALERT": "Предупреждение",
"ALERT_SUBMITTED": "Подадено предупреждение",
"ALERTS": "Предупреждения", "ALERTS": "Предупреждения",
"CHANGE_DISPLAY_MODE": "Промени режима на дисплея", "CHANGE_DISPLAY_MODE": "Промени режима на дисплея",
"CHORD_VIEW": "Преглед на акорди", "CHORD_VIEW": "Преглед на акорди",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Přidat Položku do Služby", "ADD_ITEM_TO_SERVICE": "Přidat Položku do Služby",
"ADD_TO_SERVICE": "Přidat do Služby", "ADD_TO_SERVICE": "Přidat do Služby",
"ALERT": "Upozornění", "ALERT": "Upozornění",
"ALERT_SUBMITTED": "Výstraha Odeslána",
"ALERTS": "Upozornění", "ALERTS": "Upozornění",
"CHANGE_DISPLAY_MODE": "Změnit Režim Zobrazení", "CHANGE_DISPLAY_MODE": "Změnit Režim Zobrazení",
"CHORD_VIEW": "Zobrazení Akordů", "CHORD_VIEW": "Zobrazení Akordů",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Tilføj Emne til Tjeneste", "ADD_ITEM_TO_SERVICE": "Tilføj Emne til Tjeneste",
"ADD_TO_SERVICE": "Tilføj til Tjeneste", "ADD_TO_SERVICE": "Tilføj til Tjeneste",
"ALERT": "Advarsel", "ALERT": "Advarsel",
"ALERT_SUBMITTED": "Advarsel Indsendt",
"ALERTS": "Advarsler", "ALERTS": "Advarsler",
"CHANGE_DISPLAY_MODE": "Skift Visningstilstand", "CHANGE_DISPLAY_MODE": "Skift Visningstilstand",
"CHORD_VIEW": "Akkordvisning", "CHORD_VIEW": "Akkordvisning",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Element zum Ablauf Hinzufügen", "ADD_ITEM_TO_SERVICE": "Element zum Ablauf Hinzufügen",
"ADD_TO_SERVICE": "Zum Ablauf Hinzufügen", "ADD_TO_SERVICE": "Zum Ablauf Hinzufügen",
"ALERT": "Hinweise", "ALERT": "Hinweise",
"ALERT_SUBMITTED": "Hinweise Übermittelt",
"ALERTS": "Hinweisen", "ALERTS": "Hinweisen",
"CHANGE_DISPLAY_MODE": "Anzeigemodus Ändern", "CHANGE_DISPLAY_MODE": "Anzeigemodus Ändern",
"CHORD_VIEW": "Akkordansicht", "CHORD_VIEW": "Akkordansicht",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Προσθήκη στοιχείου στην υπηρεσία", "ADD_ITEM_TO_SERVICE": "Προσθήκη στοιχείου στην υπηρεσία",
"ADD_TO_SERVICE": "Προσθήκη στην υπηρεσία", "ADD_TO_SERVICE": "Προσθήκη στην υπηρεσία",
"ALERT": "Ειδοποίηση", "ALERT": "Ειδοποίηση",
"ALERT_SUBMITTED": "Η ειδοποίηση υποβλήθηκε",
"ALERTS": "Ειδοποιήσεις", "ALERTS": "Ειδοποιήσεις",
"CHANGE_DISPLAY_MODE": "Αλλαγή λειτουργίας εμφάνισης", "CHANGE_DISPLAY_MODE": "Αλλαγή λειτουργίας εμφάνισης",
"CHORD_VIEW": "Προβολή συγχορδιών", "CHORD_VIEW": "Προβολή συγχορδιών",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Add Item to Service", "ADD_ITEM_TO_SERVICE": "Add Item to Service",
"ADD_TO_SERVICE": "Add to Service", "ADD_TO_SERVICE": "Add to Service",
"ALERT": "Alert", "ALERT": "Alert",
"ALERT_SUBMITTED": "Alert Submitted",
"ALERTS": "Alerts", "ALERTS": "Alerts",
"CHANGE_DISPLAY_MODE": "Change Display Mode", "CHANGE_DISPLAY_MODE": "Change Display Mode",
"CHORD_VIEW": "Chord View", "CHORD_VIEW": "Chord View",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Add Item to Service", "ADD_ITEM_TO_SERVICE": "Add Item to Service",
"ADD_TO_SERVICE": "Add to Service", "ADD_TO_SERVICE": "Add to Service",
"ALERT": "Alert", "ALERT": "Alert",
"ALERT_SUBMITTED": "Alert Submitted",
"ALERTS": "Alerts", "ALERTS": "Alerts",
"CHANGE_DISPLAY_MODE": "Change Display Mode", "CHANGE_DISPLAY_MODE": "Change Display Mode",
"CHORD_VIEW": "Chord View", "CHORD_VIEW": "Chord View",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Agregar Elemento al Servicio", "ADD_ITEM_TO_SERVICE": "Agregar Elemento al Servicio",
"ADD_TO_SERVICE": "Agregar al Servicio", "ADD_TO_SERVICE": "Agregar al Servicio",
"ALERT": "Alerta", "ALERT": "Alerta",
"ALERT_SUBMITTED": "Alerta Enviada",
"ALERTS": "Alertas", "ALERTS": "Alertas",
"CHANGE_DISPLAY_MODE": "Cambiar Modo de Visualización", "CHANGE_DISPLAY_MODE": "Cambiar Modo de Visualización",
"CHORD_VIEW": "Vista de Acordes", "CHORD_VIEW": "Vista de Acordes",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Agregar Elemento al Servicio", "ADD_ITEM_TO_SERVICE": "Agregar Elemento al Servicio",
"ADD_TO_SERVICE": "Agregar al Servicio", "ADD_TO_SERVICE": "Agregar al Servicio",
"ALERT": "Alerta", "ALERT": "Alerta",
"ALERT_SUBMITTED": "Alerta Enviada",
"ALERTS": "Alertas", "ALERTS": "Alertas",
"CHANGE_DISPLAY_MODE": "Cambiar Modo de Visualización", "CHANGE_DISPLAY_MODE": "Cambiar Modo de Visualización",
"CHORD_VIEW": "Vista de Acordes", "CHORD_VIEW": "Vista de Acordes",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Üksuse Lisamine Teenusesse", "ADD_ITEM_TO_SERVICE": "Üksuse Lisamine Teenusesse",
"ADD_TO_SERVICE": "Lisa Teenusesse", "ADD_TO_SERVICE": "Lisa Teenusesse",
"ALERT": "Teatise", "ALERT": "Teatise",
"ALERT_SUBMITTED": "Hoiatusteade on Esitatud",
"ALERTS": "Teatised", "ALERTS": "Teatised",
"CHANGE_DISPLAY_MODE": "Muuda Kuvamisrežiimi", "CHANGE_DISPLAY_MODE": "Muuda Kuvamisrežiimi",
"CHORD_VIEW": "Akordi Vaade", "CHORD_VIEW": "Akordi Vaade",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Lisää Tuote Palveluun", "ADD_ITEM_TO_SERVICE": "Lisää Tuote Palveluun",
"ADD_TO_SERVICE": "Lisää Palveluun", "ADD_TO_SERVICE": "Lisää Palveluun",
"ALERT": "Huomio Viesti", "ALERT": "Huomio Viesti",
"ALERT_SUBMITTED": "Ilmoitus Lähetetty",
"ALERTS": "Huomio Viestit", "ALERTS": "Huomio Viestit",
"CHANGE_DISPLAY_MODE": "Vaihda Näyttötilaa", "CHANGE_DISPLAY_MODE": "Vaihda Näyttötilaa",
"CHORD_VIEW": "Sointunäkymä", "CHORD_VIEW": "Sointunäkymä",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Ajouter un Élément au Service", "ADD_ITEM_TO_SERVICE": "Ajouter un Élément au Service",
"ADD_TO_SERVICE": "Ajouter au Service", "ADD_TO_SERVICE": "Ajouter au Service",
"ALERT": "Alerte", "ALERT": "Alerte",
"ALERT_SUBMITTED": "Alerte Soumise",
"ALERTS": "Alertes", "ALERTS": "Alertes",
"CHANGE_DISPLAY_MODE": "Changer le Mode dAffichage", "CHANGE_DISPLAY_MODE": "Changer le Mode dAffichage",
"CHORD_VIEW": "Vue des Accords", "CHORD_VIEW": "Vue des Accords",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Elem Hozzáadása a Szolgáltatáshoz", "ADD_ITEM_TO_SERVICE": "Elem Hozzáadása a Szolgáltatáshoz",
"ADD_TO_SERVICE": "Hozzáadás a Szolgáltatáshoz", "ADD_TO_SERVICE": "Hozzáadás a Szolgáltatáshoz",
"ALERT": "Riasztási", "ALERT": "Riasztási",
"ALERT_SUBMITTED": "Riasztás Elküldve",
"ALERTS": "Riasztások", "ALERTS": "Riasztások",
"CHANGE_DISPLAY_MODE": "Megjelenítési mód Módosítása", "CHANGE_DISPLAY_MODE": "Megjelenítési mód Módosítása",
"CHORD_VIEW": "Akkord Nézet", "CHORD_VIEW": "Akkord Nézet",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Tambahkan Item ke Layanan", "ADD_ITEM_TO_SERVICE": "Tambahkan Item ke Layanan",
"ADD_TO_SERVICE": "Tambahkan ke Layanan", "ADD_TO_SERVICE": "Tambahkan ke Layanan",
"ALERT": "Peringatan", "ALERT": "Peringatan",
"ALERT_SUBMITTED": "Peringatan Dikirim",
"ALERTS": "Peringatan", "ALERTS": "Peringatan",
"CHANGE_DISPLAY_MODE": "Ubah Mode Tampilan", "CHANGE_DISPLAY_MODE": "Ubah Mode Tampilan",
"CHORD_VIEW": "Tampilan Kunci", "CHORD_VIEW": "Tampilan Kunci",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Aggiungi Elemento al Servizio", "ADD_ITEM_TO_SERVICE": "Aggiungi Elemento al Servizio",
"ADD_TO_SERVICE": "Aggiungi al Servizio", "ADD_TO_SERVICE": "Aggiungi al Servizio",
"ALERT": "Allarme", "ALERT": "Allarme",
"ALERT_SUBMITTED": "Avviso Inviato",
"ALERTS": "Avvisi", "ALERTS": "Avvisi",
"CHANGE_DISPLAY_MODE": "Cambia Modalità di Visualizzazione", "CHANGE_DISPLAY_MODE": "Cambia Modalità di Visualizzazione",
"CHORD_VIEW": "Vista degli Accordi", "CHORD_VIEW": "Vista degli Accordi",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Aggiungi Elemento al Servizio", "ADD_ITEM_TO_SERVICE": "Aggiungi Elemento al Servizio",
"ADD_TO_SERVICE": "Aggiungi al Servizio", "ADD_TO_SERVICE": "Aggiungi al Servizio",
"ALERT": "Allarme", "ALERT": "Allarme",
"ALERT_SUBMITTED": "Avviso Inviato",
"ALERTS": "Avvisi", "ALERTS": "Avvisi",
"CHANGE_DISPLAY_MODE": "Cambia Modalità di Visualizzazione", "CHANGE_DISPLAY_MODE": "Cambia Modalità di Visualizzazione",
"CHORD_VIEW": "Vista degli Accordi", "CHORD_VIEW": "Vista degli Accordi",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Aggiungi Elemento al Servizio", "ADD_ITEM_TO_SERVICE": "Aggiungi Elemento al Servizio",
"ADD_TO_SERVICE": "Aggiungi al Servizio", "ADD_TO_SERVICE": "Aggiungi al Servizio",
"ALERT": "Allarme", "ALERT": "Allarme",
"ALERT_SUBMITTED": "Avviso Inviato",
"ALERTS": "Avvisi", "ALERTS": "Avvisi",
"CHANGE_DISPLAY_MODE": "Cambia Modalità di Visualizzazione", "CHANGE_DISPLAY_MODE": "Cambia Modalità di Visualizzazione",
"CHORD_VIEW": "Vista degli Accordi", "CHORD_VIEW": "Vista degli Accordi",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "サービスにアイテムを追加", "ADD_ITEM_TO_SERVICE": "サービスにアイテムを追加",
"ADD_TO_SERVICE": "サービスに追加", "ADD_TO_SERVICE": "サービスに追加",
"ALERT": "アラート", "ALERT": "アラート",
"ALERT_SUBMITTED": "アラート送信済み",
"ALERTS": "アラート", "ALERTS": "アラート",
"CHANGE_DISPLAY_MODE": "表示モードを変更", "CHANGE_DISPLAY_MODE": "表示モードを変更",
"CHORD_VIEW": "コード表示", "CHORD_VIEW": "コード表示",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "서비스에 항목 추가", "ADD_ITEM_TO_SERVICE": "서비스에 항목 추가",
"ADD_TO_SERVICE": "서비스에 추가", "ADD_TO_SERVICE": "서비스에 추가",
"ALERT": "경고", "ALERT": "경고",
"ALERT_SUBMITTED": "경고가 제출됨",
"ALERTS": "경고", "ALERTS": "경고",
"CHANGE_DISPLAY_MODE": "디스플레이 모드 변경", "CHANGE_DISPLAY_MODE": "디스플레이 모드 변경",
"CHORD_VIEW": "코드 보기", "CHORD_VIEW": "코드 보기",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Pridėti Elementą prie Paslaugos", "ADD_ITEM_TO_SERVICE": "Pridėti Elementą prie Paslaugos",
"ADD_TO_SERVICE": "Pridėti prie Paslaugos", "ADD_TO_SERVICE": "Pridėti prie Paslaugos",
"ALERT": "Įspėjimas", "ALERT": "Įspėjimas",
"ALERT_SUBMITTED": "Pateiktas Įspėjimas",
"ALERTS": "Įspėjimai", "ALERTS": "Įspėjimai",
"CHANGE_DISPLAY_MODE": "Keisti Rodymo Režimą", "CHANGE_DISPLAY_MODE": "Keisti Rodymo Režimą",
"CHORD_VIEW": "Akordei", "CHORD_VIEW": "Akordei",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Legg til Element i Tjenesten", "ADD_ITEM_TO_SERVICE": "Legg til Element i Tjenesten",
"ADD_TO_SERVICE": "Legg til i Tjenesten", "ADD_TO_SERVICE": "Legg til i Tjenesten",
"ALERT": "Varsel", "ALERT": "Varsel",
"ALERT_SUBMITTED": "Varsel Sendt Inn",
"ALERTS": "Varsler", "ALERTS": "Varsler",
"CHANGE_DISPLAY_MODE": "Endre Visningsmodus", "CHANGE_DISPLAY_MODE": "Endre Visningsmodus",
"CHORD_VIEW": "Akkordvisning", "CHORD_VIEW": "Akkordvisning",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Voeg Item Toe aan Liturgie", "ADD_ITEM_TO_SERVICE": "Voeg Item Toe aan Liturgie",
"ADD_TO_SERVICE": "Voeg Toe aan Liturgie", "ADD_TO_SERVICE": "Voeg Toe aan Liturgie",
"ALERT": "Waarschuwing", "ALERT": "Waarschuwing",
"ALERT_SUBMITTED": "Waarschuwing Verstuurd",
"ALERTS": "Waarschuwingen", "ALERTS": "Waarschuwingen",
"CHANGE_DISPLAY_MODE": "Wijzig Weergave", "CHANGE_DISPLAY_MODE": "Wijzig Weergave",
"CHORD_VIEW": "Akkoordenscherm", "CHORD_VIEW": "Akkoordenscherm",
@ -46,7 +47,7 @@
"STAGE_VIEW": "Podiumscherm", "STAGE_VIEW": "Podiumscherm",
"THEMES": "Thema's", "THEMES": "Thema's",
"THEME_LEVEL": "Thema Niveau", "THEME_LEVEL": "Thema Niveau",
"THEME_OPTIONS": "Theme Opties", "THEME_OPTIONS": "Thema Opties",
"USER_NAME": "Gebruikersnaam", "USER_NAME": "Gebruikersnaam",
"USER_INTERFACE": "Gebruikersinterface" "USER_INTERFACE": "Gebruikersinterface"
} }

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Dodaj Element do Usługi", "ADD_ITEM_TO_SERVICE": "Dodaj Element do Usługi",
"ADD_TO_SERVICE": "Dodaj do Usługi", "ADD_TO_SERVICE": "Dodaj do Usługi",
"ALERT": "Alert", "ALERT": "Alert",
"ALERT_SUBMITTED": "Przesłano Alert",
"ALERTS": "Alerty", "ALERTS": "Alerty",
"CHANGE_DISPLAY_MODE": "Zmień Tryb Wyświetlania", "CHANGE_DISPLAY_MODE": "Zmień Tryb Wyświetlania",
"CHORD_VIEW": "Widok Akordów", "CHORD_VIEW": "Widok Akordów",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Adicionar Item ao Serviço", "ADD_ITEM_TO_SERVICE": "Adicionar Item ao Serviço",
"ADD_TO_SERVICE": "Adicionar ao Serviço", "ADD_TO_SERVICE": "Adicionar ao Serviço",
"ALERT": "Alerta", "ALERT": "Alerta",
"ALERT_SUBMITTED": "Alerta Enviado",
"ALERTS": "Alertas", "ALERTS": "Alertas",
"CHANGE_DISPLAY_MODE": "Alterar Modo de Exibição", "CHANGE_DISPLAY_MODE": "Alterar Modo de Exibição",
"CHORD_VIEW": "Visualização de Acordes", "CHORD_VIEW": "Visualização de Acordes",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Adăugați Element la Serviciu", "ADD_ITEM_TO_SERVICE": "Adăugați Element la Serviciu",
"ADD_TO_SERVICE": "Adăugați la Serviciu", "ADD_TO_SERVICE": "Adăugați la Serviciu",
"ALERT": "Alertă", "ALERT": "Alertă",
"ALERT_SUBMITTED": "Alertă Transmisă",
"ALERTS": "Alerte", "ALERTS": "Alerte",
"CHANGE_DISPLAY_MODE": "Schimbați Modul de Afișare", "CHANGE_DISPLAY_MODE": "Schimbați Modul de Afișare",
"CHORD_VIEW": "Vizualizare Acorduri", "CHORD_VIEW": "Vizualizare Acorduri",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Добавить элемент в службу", "ADD_ITEM_TO_SERVICE": "Добавить элемент в службу",
"ADD_TO_SERVICE": "Добавить в службу", "ADD_TO_SERVICE": "Добавить в службу",
"ALERT": "Оповещение", "ALERT": "Оповещение",
"ALERT_SUBMITTED": "Оповещение отправлено",
"ALERTS": "Оповещения", "ALERTS": "Оповещения",
"CHANGE_DISPLAY_MODE": "Изменить режим отображения", "CHANGE_DISPLAY_MODE": "Изменить режим отображения",
"CHORD_VIEW": "Просмотр аккордов", "CHORD_VIEW": "Просмотр аккордов",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Pridať Položku do Služby", "ADD_ITEM_TO_SERVICE": "Pridať Položku do Služby",
"ADD_TO_SERVICE": "Pridať do Služby", "ADD_TO_SERVICE": "Pridať do Služby",
"ALERT": "Upozornenie", "ALERT": "Upozornenie",
"ALERT_SUBMITTED": "Upozornenie Bolo Odoslané",
"ALERTS": "Upozornenia", "ALERTS": "Upozornenia",
"CHANGE_DISPLAY_MODE": "Zmeniť Režim Zobrazenia", "CHANGE_DISPLAY_MODE": "Zmeniť Režim Zobrazenia",
"CHORD_VIEW": "Zobrazenie Akordov", "CHORD_VIEW": "Zobrazenie Akordov",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Dodaj Predmet v Spored", "ADD_ITEM_TO_SERVICE": "Dodaj Predmet v Spored",
"ADD_TO_SERVICE": "Dodaj v Spored", "ADD_TO_SERVICE": "Dodaj v Spored",
"ALERT": "Opozorilo", "ALERT": "Opozorilo",
"ALERT_SUBMITTED": "Predloženo Opozorilo",
"ALERTS": "Opozorila", "ALERTS": "Opozorila",
"CHANGE_DISPLAY_MODE": "Spremeni Način Prikaza", "CHANGE_DISPLAY_MODE": "Spremeni Način Prikaza",
"CHORD_VIEW": "Pogled s Sozvoki", "CHORD_VIEW": "Pogled s Sozvoki",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Lägg till Objekt i Tjänsten", "ADD_ITEM_TO_SERVICE": "Lägg till Objekt i Tjänsten",
"ADD_TO_SERVICE": "Lägg till i Tjänsten", "ADD_TO_SERVICE": "Lägg till i Tjänsten",
"ALERT": "Varning", "ALERT": "Varning",
"ALERT_SUBMITTED": "Avisering Skickad",
"ALERTS": "Varningar", "ALERTS": "Varningar",
"CHANGE_DISPLAY_MODE": "Ändra Visningsläge", "CHANGE_DISPLAY_MODE": "Ändra Visningsläge",
"CHORD_VIEW": "Ackordvy", "CHORD_VIEW": "Ackordvy",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "பொருள் சேர்க்க சேவைக்கு", "ADD_ITEM_TO_SERVICE": "பொருள் சேர்க்க சேவைக்கு",
"ADD_TO_SERVICE": "சேவைக்கு சேர்க்கவும்", "ADD_TO_SERVICE": "சேவைக்கு சேர்க்கவும்",
"ALERT": "எச்சரிக்கை", "ALERT": "எச்சரிக்கை",
"ALERT_SUBMITTED": "எச்சரிக்கை சமர்ப்பிக்கப்பட்டது",
"ALERTS": "எச்சரிக்கைகள்", "ALERTS": "எச்சரிக்கைகள்",
"CHANGE_DISPLAY_MODE": "காட்சி முறையை மாற்று", "CHANGE_DISPLAY_MODE": "காட்சி முறையை மாற்று",
"CHORD_VIEW": "கார்டு காட்சி", "CHORD_VIEW": "கார்டு காட்சி",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "เพิ่มรายการในบริการ", "ADD_ITEM_TO_SERVICE": "เพิ่มรายการในบริการ",
"ADD_TO_SERVICE": "เพิ่มในบริการ", "ADD_TO_SERVICE": "เพิ่มในบริการ",
"ALERT": "แจ้งเตือน", "ALERT": "แจ้งเตือน",
"ALERT_SUBMITTED": "ส่งการแจ้งเตือนแล้ว",
"ALERTS": "การแจ้งเตือน", "ALERTS": "การแจ้งเตือน",
"CHANGE_DISPLAY_MODE": "เปลี่ยนโหมดการแสดงผล", "CHANGE_DISPLAY_MODE": "เปลี่ยนโหมดการแสดงผล",
"CHORD_VIEW": "มุมมองคอร์ด", "CHORD_VIEW": "มุมมองคอร์ด",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "Thêm mục vào Dịch vụ", "ADD_ITEM_TO_SERVICE": "Thêm mục vào Dịch vụ",
"ADD_TO_SERVICE": "Thêm vào Dịch vụ", "ADD_TO_SERVICE": "Thêm vào Dịch vụ",
"ALERT": "Cảnh báo", "ALERT": "Cảnh báo",
"ALERT_SUBMITTED": "Cảnh báo đã Gửi",
"ALERTS": "Các cảnh báo", "ALERTS": "Các cảnh báo",
"CHANGE_DISPLAY_MODE": "Thay đổi Chế độ Hiển thị", "CHANGE_DISPLAY_MODE": "Thay đổi Chế độ Hiển thị",
"CHORD_VIEW": "Xem hợp âm", "CHORD_VIEW": "Xem hợp âm",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "添加项目到服务", "ADD_ITEM_TO_SERVICE": "添加项目到服务",
"ADD_TO_SERVICE": "添加到服务", "ADD_TO_SERVICE": "添加到服务",
"ALERT": "警报", "ALERT": "警报",
"ALERT_SUBMITTED": "警报已提交",
"ALERTS": "警报", "ALERTS": "警报",
"CHANGE_DISPLAY_MODE": "更改显示模式", "CHANGE_DISPLAY_MODE": "更改显示模式",
"CHORD_VIEW": "和弦视图", "CHORD_VIEW": "和弦视图",

View File

@ -3,6 +3,7 @@
"ADD_ITEM_TO_SERVICE": "新增項目至服務", "ADD_ITEM_TO_SERVICE": "新增項目至服務",
"ADD_TO_SERVICE": "新增至服務", "ADD_TO_SERVICE": "新增至服務",
"ALERT": "警示", "ALERT": "警示",
"ALERT_SUBMITTED": "警報已提交",
"ALERTS": "警示訊息", "ALERTS": "警示訊息",
"CHANGE_DISPLAY_MODE": "變更顯示模式", "CHANGE_DISPLAY_MODE": "變更顯示模式",
"CHORD_VIEW": "和弦檢視", "CHORD_VIEW": "和弦檢視",

440
yarn.lock
View File

@ -1675,10 +1675,10 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
"@fontsource/roboto@^5.0.12": "@fontsource/roboto@^5.0.13":
version "5.0.12" version "5.0.13"
resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-5.0.12.tgz#418f7305a3be7fc567dd154db20090f7ece7fc6c" resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-5.0.13.tgz#2d6ec431a2f9dfe38ca76525c2d6bf12241f575b"
integrity sha512-x0o17jvgoSSbS9OZnUX2+xJmVRvVCfeaYJjkS7w62iN7CuJWtMf5vJj8LqgC7ibqIkitOHVW+XssRjgrcHn62g== integrity sha512-j61DHjsdUCKMXSdNLTOxcG701FWnF0jcqNNQi2iPCDxU8seN/sMxeh62dC++UiagCWq9ghTypX+Pcy7kX+QOeQ==
"@humanwhocodes/config-array@^0.11.14": "@humanwhocodes/config-array@^0.11.14":
version "0.11.14" version "0.11.14"
@ -2613,27 +2613,27 @@
node-gyp "^10.0.0" node-gyp "^10.0.0"
which "^4.0.0" which "^4.0.0"
"@nrwl/devkit@18.3.2": "@nrwl/devkit@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-18.3.2.tgz#21aa1db02ddc1d26856d964526e1120ca7479612" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-18.3.3.tgz#9ec5575afe6d14b17acd5e8da4e98a0de27704c6"
integrity sha512-srguS6WNE/sP99OTfPqUdI22CNEocvxyz4TOB6Uj5zcFiKIFOlWn0NFwathdWVKwvsszY1Zvt/YiVjzYNUDqWw== integrity sha512-3zZLE1vfwsNie7qjVUt9lqaM1slU0RTr/dW+Yt/2lxe8Peu6f8bnCM1Pf3kSlzoxQroctfocRtVHFXJsAuAt4g==
dependencies: dependencies:
"@nx/devkit" "18.3.2" "@nx/devkit" "18.3.3"
"@nrwl/tao@18.3.2": "@nrwl/tao@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-18.3.2.tgz#20f99fb5ee76aacb0efda7a1c264f890c4e6c163" resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-18.3.3.tgz#2d0c60d233f2cc07c85ba08126dd46f21dda1ef0"
integrity sha512-TQmaUMEIlKcytBpaHVG3VMPhfoJl09u3KaE6F1eJcFi7+za8rivH+HM+jlhwCAOlaC9bmnvJy0GvnFa5WtScsg== integrity sha512-f/PUDLpSMEObiLQ5sIDySJM+5DxSCNunkxxbY1R9rmQ1cFcgrHaXIHQqbSj91mMa3mmtbKACk8u1LbI+oQV0Tg==
dependencies: dependencies:
nx "18.3.2" nx "18.3.3"
tslib "^2.3.0" tslib "^2.3.0"
"@nx/devkit@18.3.2", "@nx/devkit@^17.2.8 || ^18.0.0": "@nx/devkit@18.3.3", "@nx/devkit@^17.2.8 || ^18.0.0":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-18.3.2.tgz#f2515620b87a6880096ae59f9899f23844370ba6" resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-18.3.3.tgz#2ec37855020da74ad1e77b51711b057b3cb12fec"
integrity sha512-H55m7R6zKteZ5DE0o2IOwpwo8RQXiH4RkBELWn9YkSQPvps8K7psyMzPQofP37qD5S0u7pYjGIWiJDzij+OeEQ== integrity sha512-FtkZ6mA5//vEA5lcbT80m080ROVacHYV5F1peztTRA+IY2JZGJoqx425kn5ylDO8aCSAIAwcn2qIdhI8BnpG3Q==
dependencies: dependencies:
"@nrwl/devkit" "18.3.2" "@nrwl/devkit" "18.3.3"
ejs "^3.1.7" ejs "^3.1.7"
enquirer "~2.3.6" enquirer "~2.3.6"
ignore "^5.0.4" ignore "^5.0.4"
@ -2642,140 +2642,140 @@
tslib "^2.3.0" tslib "^2.3.0"
yargs-parser "21.1.1" yargs-parser "21.1.1"
"@nx/nx-darwin-arm64@18.3.2": "@nx/nx-darwin-arm64@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-18.3.2.tgz#2aee0898234376bdd2c9b7928b18c4ce2c9afc99" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-18.3.3.tgz#dcdbcfe2796bbe3f1dfd61bce81389b05a50e69b"
integrity sha512-x+C4a+DMGxHks/aKtyYa5+muF5BrJcDwxSPazRmrI9c80vo3J8TYjryXPHyZ/L3/3oNp72FtyPR46z3qf8NpQQ== integrity sha512-NpA2/7o1uUuaocMYopX9muxKif9HlGfWaXo2UeiR918usF6xri4aUqweZbaXVc9iqCAEbVMWUsjaLYGKPXHAjw==
"@nx/nx-darwin-x64@18.3.2": "@nx/nx-darwin-x64@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-18.3.2.tgz#45f8bc9fdd071138f513ad6b88f1988736747eb6" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-18.3.3.tgz#aa7bdd1a3ea0bb81682422b805914efccab3b179"
integrity sha512-5krmqFbsaeDLpSRaonEqlAiL4MBIWVguE9vs0/lp6vlnyIXT3TRftk4B4Tpi+PqIN6tC/Ll8gGoHzSdwHboAcg== integrity sha512-aydPLbc7DeceJ6szRf6DLT4ERoPvwfWyFiGXdAlEZYWhjEuNZLeG8K6jA3yHeWltKfX/qJqhnyKbnubBNzBKlQ==
"@nx/nx-freebsd-x64@18.3.2": "@nx/nx-freebsd-x64@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-18.3.2.tgz#0e8722f29ad49f114b1b486fdc17878a40549868" resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-18.3.3.tgz#331f5dbb56c90b08e99c1ce9ff51e0c5b956f030"
integrity sha512-FenZBqJ5FK/QoExmngolq3q5NsOmJgrhy1Q3NiG0yOTcXnwIZO9pHmRDTZ33niTxuXSRvCgvJE4uBAM9YvptYw== integrity sha512-sEYEWsK/fwC1l7wzls7RNOjhmrooH0lK0mpgj1vDXesLBSZ7k+pddAqaHFECN4QXBSbHZI2PWOEhbnIH+Errsg==
"@nx/nx-linux-arm-gnueabihf@18.3.2": "@nx/nx-linux-arm-gnueabihf@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-18.3.2.tgz#a8ea0482f034ca34354b7cdd4a3311ee986edde1" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-18.3.3.tgz#d66d4787f5cfc56b5a7aa9a0453174b96b4729a8"
integrity sha512-xjh4WvRIN1vZpsL4tFlaAoZ15R/R4a7e+4Ai8h8evRA7Mz31k/iUEpfcF+6EJfwFX0IjI59QnWzZ19Z5XFfl0Q== integrity sha512-B9GGMkrrzwiAfvew22x85ITO9TiNxbgRbKJQWQaoopNpXrnSWpY8WTNxpDT24fwV1qdQfsPKcY3F4O0NOUgPRA==
"@nx/nx-linux-arm64-gnu@18.3.2": "@nx/nx-linux-arm64-gnu@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-18.3.2.tgz#798409918ffb0096f07540a080e7001793e3b607" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-18.3.3.tgz#2ab08df1d052a55d4a52ba910fe41c25701d5361"
integrity sha512-Y82fDCuIjirdsS1tKfqC91qLdVhYS6NcU310fzMP4HI4A4WwdcMqHnn6E/O2glYW9CTYRQANo89fB44Zqbg7Cg== integrity sha512-1EucHf5/0JeqZmhritqkpEdOcdo9Dl32gpFvhNfS6kCAYmaDlEl4zqedz3VIoj4C7+C0pV3mcRO9qB9H7GM5bQ==
"@nx/nx-linux-arm64-musl@18.3.2": "@nx/nx-linux-arm64-musl@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-18.3.2.tgz#976e8d01229cccb76e738fab69a6b7218c59f60a" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-18.3.3.tgz#69376454bb9759c376d0a90aa876dfff6bbf4d15"
integrity sha512-iaGfejem22yJI707jlWMDwlUFStT3zzm+hUJOWcTH/owREVDDcX9SrYOcNoqecipGFttwEow7jtgg2E/9mb20A== integrity sha512-HPgOgnYYLPVCBEaAkSEGPGzZqTDCiyCAF/qtvx5z0f1U/hZYb1ubgxw70ogY82Cafr7X4gQBz5k4/ZCnoCXlOQ==
"@nx/nx-linux-x64-gnu@18.3.2": "@nx/nx-linux-x64-gnu@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-18.3.2.tgz#d41644efe55fa7d8c9d0a1a5d8eff7283d51377c" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-18.3.3.tgz#0b8ba8ec0c2371f0df462742460d52d63b1cc715"
integrity sha512-VV6T/tXURZ0r2N6VArI0JW4+Lf6Zq4UssCn6GS3cj75q7OhsQDqgcVIjET7zjqRhrc6ndZdi7d4YdEndOEMU+Q== integrity sha512-FgYTQ3VEE6EUOGtJT9riRK8IBwPGFjKS+N2mudQJn2bB/9IumUvVRYQUIX08gqGLlqZPO6uUUhUjwZY8SnjRLQ==
"@nx/nx-linux-x64-musl@18.3.2": "@nx/nx-linux-x64-musl@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-18.3.2.tgz#9ad2492a4b9b5fb4ccea513b8c554d0645ee93f3" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-18.3.3.tgz#c96d6f8d2d94b99ac8da723077ebbc92f833beea"
integrity sha512-Pg3/HmNbCTd5Hm/EXHu+FRl4OInbqX44qh0pMpSuCSIjVPbyCXlKCQRsQWo6d3KQIUOvYsBZRAKjHVhhywcScg== integrity sha512-QnWjGViR1Wj9gJXa1RJ9mXyy2/JzQ7NF2C4ulTYSH5St1HoxhkfnLsV0+uNLFEV9PSZq+2BfxmQuT8Appefv1A==
"@nx/nx-win32-arm64-msvc@18.3.2": "@nx/nx-win32-arm64-msvc@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-18.3.2.tgz#fff2b1a856f91ce3e36d6a4cd9d358a20a776feb" resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-18.3.3.tgz#0d2c7396e7a063849edbd6e3d34ea81445c389b5"
integrity sha512-c1aOj27HjQPDrGwHm2ytQfHQNMFJ8AyKLtWOEGMhUwDsRRqHd61Pg8kqSac1A9sdrSq4jRfVYsbzaGl1bE+gcw== integrity sha512-Xn3LUaPsF8QkEYUVV3lc693NTCMWrfZBFXTy1cQpvLzQ+idsXQ/EGWoq93cIM3Nc2YWyblT2hHHelb8dHCZAlw==
"@nx/nx-win32-x64-msvc@18.3.2": "@nx/nx-win32-x64-msvc@18.3.3":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.3.2.tgz#58e9fd9ab952794b098b7081e0b2b617b3ba52e6" resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.3.3.tgz#ea1a60ae1ffe805529d5cb95e7b28e6b8ae24621"
integrity sha512-yDSYZch5RUQKFeGBloAbIKIeYNg8862ZX/lT54GeSYnI/32KqFABwuCV+tGjvPoTgA4Q0sI/F8i0NPhYwsC1Ww== integrity sha512-t8HvOnQEiaaoTFOOIrql30NPhIwDFO7jg0Jtz3Tbneulh7ceswJp71yFHsRGGrYZ23Tgg+Sna6M9qLRGzlRGkg==
"@pkgjs/parseargs@^0.11.0": "@pkgjs/parseargs@^0.11.0":
version "0.11.0" version "0.11.0"
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
"@rollup/rollup-android-arm-eabi@4.14.3": "@rollup/rollup-android-arm-eabi@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz#bddf05c3387d02fac04b6b86b3a779337edfed75" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.2.tgz#29b7b3c70ddf532fe6dcf859cbfc3e4714c34842"
integrity sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g== integrity sha512-VGodkwtEuZ+ENPz/CpDSl091koMv8ao5jHVMbG1vNK+sbx/48/wVzP84M5xSfDAC69mAKKoEkSo+ym9bXYRK9w==
"@rollup/rollup-android-arm64@4.14.3": "@rollup/rollup-android-arm64@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz#b26bd09de58704c0a45e3375b76796f6eda825e4" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.2.tgz#f50f65d0c3b8b30d070d8616b2dfc0978dd588bd"
integrity sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ== integrity sha512-5/W1xyIdc7jw6c/f1KEtg1vYDBWnWCsLiipK41NiaWGLG93eH2edgE6EgQJ3AGiPERhiOLUqlDSfjRK08C9xFg==
"@rollup/rollup-darwin-arm64@4.14.3": "@rollup/rollup-darwin-arm64@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz#c5f3fd1aa285b6d33dda6e3f3ca395f8c37fd5ca" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.2.tgz#be3d9fffbf6fc5b9d5f0642f1f0250e0ecab8d3e"
integrity sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA== integrity sha512-vOAKMqZSTbPfyPVu1jBiy+YniIQd3MG7LUnqV0dA6Q5tyhdqYtxacTHP1+S/ksKl6qCtMG1qQ0grcIgk/19JEA==
"@rollup/rollup-darwin-x64@4.14.3": "@rollup/rollup-darwin-x64@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz#8e4673734d7dc9d68f6d48e81246055cda0e840f" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.2.tgz#fe45a772526b2c03d545e20f97a1e5cd60a46e52"
integrity sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw== integrity sha512-aIJVRUS3Dnj6MqocBMrcXlatKm64O3ITeQAdAxVSE9swyhNyV1dwnRgw7IGKIkDQofatd8UqMSyUxuFEa42EcA==
"@rollup/rollup-linux-arm-gnueabihf@4.14.3": "@rollup/rollup-linux-arm-gnueabihf@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz#53ed38eb13b58ababdb55a7f66f0538a7f85dcba" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.2.tgz#450ecf66f30a51514413aafa79d28561db73151c"
integrity sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw== integrity sha512-/bjfUiXwy3P5vYr6/ezv//Yle2Y0ak3a+Av/BKoi76nFryjWCkki8AuVoPR7ZU/ckcvAWFo77OnFK14B9B5JsA==
"@rollup/rollup-linux-arm-musleabihf@4.14.3": "@rollup/rollup-linux-arm-musleabihf@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz#0706ee38330e267a5c9326956820f009cfb21fcd" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.2.tgz#1e8807d220047084579cd01499c5476a325e0700"
integrity sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw== integrity sha512-S24b+tJHwpq2TNRz9T+r71FjMvyBBApY8EkYxz8Cwi/rhH6h+lu/iDUxyc9PuHf9UvyeBFYkWWcrDahai/NCGw==
"@rollup/rollup-linux-arm64-gnu@4.14.3": "@rollup/rollup-linux-arm64-gnu@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz#426fce7b8b242ac5abd48a10a5020f5a468c6cb4" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.2.tgz#128adb9dbf0057b989127d2e7fd73931a6729410"
integrity sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA== integrity sha512-UN7VAXLyeyGbCQWiOtQN7BqmjTDw1ON2Oos4lfk0YR7yNhFEJWZiwGtvj9Ay4lsT/ueT04sh80Sg2MlWVVZ+Ug==
"@rollup/rollup-linux-arm64-musl@4.14.3": "@rollup/rollup-linux-arm64-musl@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz#65bf944530d759b50d7ffd00dfbdf4125a43406f" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.2.tgz#fddc7730045301a7fb0132532890e5edcb23d2bc"
integrity sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw== integrity sha512-ZBKvz3+rIhQjusKMccuJiPsStCrPOtejCHxTe+yWp3tNnuPWtyCh9QLGPKz6bFNFbwbw28E2T6zDgzJZ05F1JQ==
"@rollup/rollup-linux-powerpc64le-gnu@4.14.3": "@rollup/rollup-linux-powerpc64le-gnu@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz#494ba3b31095e9a45df9c3f646d21400fb631a95" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.2.tgz#7154fe9ffc6405b2a6555ca931c42c0aa5198c2a"
integrity sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw== integrity sha512-LjMMFiVBRL3wOe095vHAekL4b7nQqf4KZEpdMWd3/W+nIy5o9q/8tlVKiqMbfieDypNXLsxM9fexOxd9Qcklyg==
"@rollup/rollup-linux-riscv64-gnu@4.14.3": "@rollup/rollup-linux-riscv64-gnu@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz#8b88ed0a40724cce04aa15374ebe5ba4092d679f" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.2.tgz#7a7d091a94fa7c50ebf72d5578475093e01c739e"
integrity sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ== integrity sha512-ohkPt0lKoCU0s4B6twro2aft+QROPdUiWwOjPNTzwTsBK5w+2+iT9kySdtOdq0gzWJAdiqsV4NFtXOwGZmIsHA==
"@rollup/rollup-linux-s390x-gnu@4.14.3": "@rollup/rollup-linux-s390x-gnu@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz#09c9e5ec57a0f6ec3551272c860bb9a04b96d70f" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.2.tgz#39b87bd355dfafbc062ca856d3d6bc5aa1905d89"
integrity sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg== integrity sha512-jm2lvLc+/gqXfndlpDw05jKvsl/HKYxUEAt1h5UXcMFVpO4vGpoWmJVUfKDtTqSaHcCNw1his1XjkgR9aort3w==
"@rollup/rollup-linux-x64-gnu@4.14.3": "@rollup/rollup-linux-x64-gnu@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz#197f27fd481ad9c861021d5cbbf21793922a631c" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.2.tgz#30b88169db18dec202ab9662d5148523d59da553"
integrity sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA== integrity sha512-oc5/SlITI/Vj/qL4UM+lXN7MERpiy1HEOnrE+SegXwzf7WP9bzmZd6+MDljCEZTdSY84CpvUv9Rq7bCaftn1+g==
"@rollup/rollup-linux-x64-musl@4.14.3": "@rollup/rollup-linux-x64-musl@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz#5cc0522f4942f2df625e9bfb6fb02c6580ffbce6" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.2.tgz#d4fd52a28d5ce4aaed436311d89a9a1eaff87c2d"
integrity sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg== integrity sha512-/2VWEBG6mKbS2itm7hzPwhIPaxfZh/KLWrYg20pCRLHhNFtF+epLgcBtwy3m07bl/k86Q3PFRAf2cX+VbZbwzQ==
"@rollup/rollup-win32-arm64-msvc@4.14.3": "@rollup/rollup-win32-arm64-msvc@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz#a648122389d23a7543b261fba082e65fefefe4f6" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.2.tgz#edd352302e3fa6a2d612447590b0a0887cdbf762"
integrity sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg== integrity sha512-Wg7ANh7+hSilF0lG3e/0Oy8GtfTIfEk1327Bw8juZOMOoKmJLs3R+a4JDa/4cHJp2Gs7QfCDTepXXcyFD0ubBg==
"@rollup/rollup-win32-ia32-msvc@4.14.3": "@rollup/rollup-win32-ia32-msvc@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz#34727b5c7953c35fc6e1ae4f770ad3a2025f8e03" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.2.tgz#f17cc1db108f364bf6ef427f98844b5f742d31f0"
integrity sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw== integrity sha512-J/jCDKVMWp0Y2ELnTjpQFYUCUWv1Jr+LdFrJVZtdqGyjDo0PHPa7pCamjHvJel6zBFM3doFFqAr7cmXYWBAbfw==
"@rollup/rollup-win32-x64-msvc@4.14.3": "@rollup/rollup-win32-x64-msvc@4.16.2":
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz#5b2fb4d8cd44c05deef8a7b0e6deb9ccb8939d18" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.2.tgz#98fb87589960075d39c44784e3a99f67138602f4"
integrity sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA== integrity sha512-3nIf+SJMs2ZzrCh+SKNqgLVV9hS/UY0UjT1YU8XQYFGLiUfmHYJ/5trOU1XSvmHjV5gTF/K3DjrWxtyzKKcAHA==
"@schematics/angular@17.3.5": "@schematics/angular@17.3.5":
version "17.3.5" version "17.3.5"
@ -3074,16 +3074,16 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@typescript-eslint/eslint-plugin@7.7.0": "@typescript-eslint/eslint-plugin@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.0.tgz#bf34a02f221811505b8bf2f31060c8560c1bb0a3" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz#50a9044e3e5fe76b22caf64fb7fc1f97614bdbfd"
integrity sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ== integrity sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==
dependencies: dependencies:
"@eslint-community/regexpp" "^4.10.0" "@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "7.7.0" "@typescript-eslint/scope-manager" "7.7.1"
"@typescript-eslint/type-utils" "7.7.0" "@typescript-eslint/type-utils" "7.7.1"
"@typescript-eslint/utils" "7.7.0" "@typescript-eslint/utils" "7.7.1"
"@typescript-eslint/visitor-keys" "7.7.0" "@typescript-eslint/visitor-keys" "7.7.1"
debug "^4.3.4" debug "^4.3.4"
graphemer "^1.4.0" graphemer "^1.4.0"
ignore "^5.3.1" ignore "^5.3.1"
@ -3091,15 +3091,15 @@
semver "^7.6.0" semver "^7.6.0"
ts-api-utils "^1.3.0" ts-api-utils "^1.3.0"
"@typescript-eslint/parser@7.7.0": "@typescript-eslint/parser@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.7.0.tgz#6b1b3ce76c5de002c43af8ae933613b0f2b4bcc6" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.7.1.tgz#f940e9f291cdca40c46cb75916217d3a42d6ceea"
integrity sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg== integrity sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "7.7.0" "@typescript-eslint/scope-manager" "7.7.1"
"@typescript-eslint/types" "7.7.0" "@typescript-eslint/types" "7.7.1"
"@typescript-eslint/typescript-estree" "7.7.0" "@typescript-eslint/typescript-estree" "7.7.1"
"@typescript-eslint/visitor-keys" "7.7.0" "@typescript-eslint/visitor-keys" "7.7.1"
debug "^4.3.4" debug "^4.3.4"
"@typescript-eslint/scope-manager@7.2.0": "@typescript-eslint/scope-manager@7.2.0":
@ -3110,13 +3110,13 @@
"@typescript-eslint/types" "7.2.0" "@typescript-eslint/types" "7.2.0"
"@typescript-eslint/visitor-keys" "7.2.0" "@typescript-eslint/visitor-keys" "7.2.0"
"@typescript-eslint/scope-manager@7.7.0": "@typescript-eslint/scope-manager@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz#3f0db079b275bb8b0cb5be7613fb3130cfb5de77" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz#07fe59686ca843f66e3e2b5c151522bc38effab2"
integrity sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw== integrity sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==
dependencies: dependencies:
"@typescript-eslint/types" "7.7.0" "@typescript-eslint/types" "7.7.1"
"@typescript-eslint/visitor-keys" "7.7.0" "@typescript-eslint/visitor-keys" "7.7.1"
"@typescript-eslint/type-utils@7.2.0": "@typescript-eslint/type-utils@7.2.0":
version "7.2.0" version "7.2.0"
@ -3128,13 +3128,13 @@
debug "^4.3.4" debug "^4.3.4"
ts-api-utils "^1.0.1" ts-api-utils "^1.0.1"
"@typescript-eslint/type-utils@7.7.0": "@typescript-eslint/type-utils@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.7.0.tgz#36792ff4209a781b058de61631a48df17bdefbc5" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz#2f8094edca3bebdaad009008929df645ed9c8743"
integrity sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg== integrity sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==
dependencies: dependencies:
"@typescript-eslint/typescript-estree" "7.7.0" "@typescript-eslint/typescript-estree" "7.7.1"
"@typescript-eslint/utils" "7.7.0" "@typescript-eslint/utils" "7.7.1"
debug "^4.3.4" debug "^4.3.4"
ts-api-utils "^1.3.0" ts-api-utils "^1.3.0"
@ -3143,10 +3143,10 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f"
integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==
"@typescript-eslint/types@7.7.0": "@typescript-eslint/types@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.7.0.tgz#23af4d24bf9ce15d8d301236e3e3014143604f27" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.7.1.tgz#f903a651fb004c75add08e4e9e207f169d4b98d7"
integrity sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w== integrity sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==
"@typescript-eslint/typescript-estree@7.2.0": "@typescript-eslint/typescript-estree@7.2.0":
version "7.2.0" version "7.2.0"
@ -3162,13 +3162,13 @@
semver "^7.5.4" semver "^7.5.4"
ts-api-utils "^1.0.1" ts-api-utils "^1.0.1"
"@typescript-eslint/typescript-estree@7.7.0": "@typescript-eslint/typescript-estree@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz#b5dd6383b4c6a852d7b256a37af971e8982be97f" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz#5cafde48fe390fe1c1b329b2ce0ba8a73c1e87b2"
integrity sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ== integrity sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==
dependencies: dependencies:
"@typescript-eslint/types" "7.7.0" "@typescript-eslint/types" "7.7.1"
"@typescript-eslint/visitor-keys" "7.7.0" "@typescript-eslint/visitor-keys" "7.7.1"
debug "^4.3.4" debug "^4.3.4"
globby "^11.1.0" globby "^11.1.0"
is-glob "^4.0.3" is-glob "^4.0.3"
@ -3189,17 +3189,17 @@
"@typescript-eslint/typescript-estree" "7.2.0" "@typescript-eslint/typescript-estree" "7.2.0"
semver "^7.5.4" semver "^7.5.4"
"@typescript-eslint/utils@7.7.0": "@typescript-eslint/utils@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.7.0.tgz#3d2b6606a60ac34f3c625facfb3b3ab7e126f58d" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.7.1.tgz#5d161f2b4a55e1bc38b634bebb921e4bd4e4a16e"
integrity sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig== integrity sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==
dependencies: dependencies:
"@eslint-community/eslint-utils" "^4.4.0" "@eslint-community/eslint-utils" "^4.4.0"
"@types/json-schema" "^7.0.15" "@types/json-schema" "^7.0.15"
"@types/semver" "^7.5.8" "@types/semver" "^7.5.8"
"@typescript-eslint/scope-manager" "7.7.0" "@typescript-eslint/scope-manager" "7.7.1"
"@typescript-eslint/types" "7.7.0" "@typescript-eslint/types" "7.7.1"
"@typescript-eslint/typescript-estree" "7.7.0" "@typescript-eslint/typescript-estree" "7.7.1"
semver "^7.6.0" semver "^7.6.0"
"@typescript-eslint/visitor-keys@7.2.0": "@typescript-eslint/visitor-keys@7.2.0":
@ -3210,12 +3210,12 @@
"@typescript-eslint/types" "7.2.0" "@typescript-eslint/types" "7.2.0"
eslint-visitor-keys "^3.4.1" eslint-visitor-keys "^3.4.1"
"@typescript-eslint/visitor-keys@7.7.0": "@typescript-eslint/visitor-keys@7.7.1":
version "7.7.0" version "7.7.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz#950148cf1ac11562a2d903fdf7acf76714a2dc9e" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz#da2294796220bb0f3b4add5ecbb1b9c3f4f65798"
integrity sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA== integrity sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==
dependencies: dependencies:
"@typescript-eslint/types" "7.7.0" "@typescript-eslint/types" "7.7.1"
eslint-visitor-keys "^3.4.3" eslint-visitor-keys "^3.4.3"
"@ungap/structured-clone@^1.2.0": "@ungap/structured-clone@^1.2.0":
@ -3919,9 +3919,9 @@ camelcase@^5.3.1:
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001591: caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001591:
version "1.0.30001611" version "1.0.30001612"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz#4dbe78935b65851c2d2df1868af39f709a93a96e" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz#d34248b4ec1f117b70b24ad9ee04c90e0b8a14ae"
integrity sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q== integrity sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==
chalk@^2.4.2: chalk@^2.4.2:
version "2.4.2" version "2.4.2"
@ -4193,7 +4193,7 @@ core-js-compat@^3.31.0, core-js-compat@^3.34.0:
dependencies: dependencies:
browserslist "^4.23.0" browserslist "^4.23.0"
core-js@^3.37.0: core-js@^3.35.0, core-js@^3.37.0:
version "3.37.0" version "3.37.0"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb"
integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==
@ -4538,9 +4538,9 @@ ejs@^3.1.7:
jake "^10.8.5" jake "^10.8.5"
electron-to-chromium@^1.4.668: electron-to-chromium@^1.4.668:
version "1.4.744" version "1.4.745"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.744.tgz#d19cdfdbd81bd800b71773702bcbaa129a3b2e8f" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.745.tgz#9c202ce9cbf18a5b5e0ca47145fd127cc4dd2290"
integrity sha512-nAGcF0yeKKfrP13LMFr5U1eghfFSvFLg302VUFzWlcjPOnUYd52yU5x6PBYrujhNbc4jYmZFrGZFK+xasaEzVA== integrity sha512-tRbzkaRI5gbUn5DEvF0dV4TQbMZ5CLkWeTAXmpC9IrYT+GE+x76i9p+o3RJ5l9XmdQlI1pPhVtE9uNcJJ0G0EA==
emoji-regex@^8.0.0: emoji-regex@^8.0.0:
version "8.0.0" version "8.0.0"
@ -5789,9 +5789,9 @@ ipaddr.js@1.9.1:
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1: ipaddr.js@^2.0.1:
version "2.1.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
is-array-buffer@^3.0.4: is-array-buffer@^3.0.4:
version "3.0.4" version "3.0.4"
@ -6950,12 +6950,12 @@ nth-check@^2.0.1:
dependencies: dependencies:
boolbase "^1.0.0" boolbase "^1.0.0"
nx@18.3.2, "nx@^17.2.8 || ^18.0.0": nx@18.3.3, "nx@^17.2.8 || ^18.0.0":
version "18.3.2" version "18.3.3"
resolved "https://registry.yarnpkg.com/nx/-/nx-18.3.2.tgz#4ce7b2dae228c0515d21c5d834883e60a8296635" resolved "https://registry.yarnpkg.com/nx/-/nx-18.3.3.tgz#ab96811961b631efd4f0c83550e92f7b0a625e83"
integrity sha512-kgkfmkwJQQ8Fp5AkvoZlnRaUrdJhckte8RyFhy86VeYjUcWYzV6shrbasKxTB0ZvCikHYjbI7QnmVYmZujEjhQ== integrity sha512-GqC5ANfTWV6SFbgquZwuRMI2Z2nO0c0Yx4JzM3x32aJOgXsmRml3WcV0a5648bIXSen34gylHYl2EHaxVWkzNQ==
dependencies: dependencies:
"@nrwl/tao" "18.3.2" "@nrwl/tao" "18.3.3"
"@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/lockfile" "^1.1.0"
"@yarnpkg/parsers" "3.0.0-rc.46" "@yarnpkg/parsers" "3.0.0-rc.46"
"@zkochan/js-yaml" "0.0.6" "@zkochan/js-yaml" "0.0.6"
@ -6990,16 +6990,16 @@ nx@18.3.2, "nx@^17.2.8 || ^18.0.0":
yargs "^17.6.2" yargs "^17.6.2"
yargs-parser "21.1.1" yargs-parser "21.1.1"
optionalDependencies: optionalDependencies:
"@nx/nx-darwin-arm64" "18.3.2" "@nx/nx-darwin-arm64" "18.3.3"
"@nx/nx-darwin-x64" "18.3.2" "@nx/nx-darwin-x64" "18.3.3"
"@nx/nx-freebsd-x64" "18.3.2" "@nx/nx-freebsd-x64" "18.3.3"
"@nx/nx-linux-arm-gnueabihf" "18.3.2" "@nx/nx-linux-arm-gnueabihf" "18.3.3"
"@nx/nx-linux-arm64-gnu" "18.3.2" "@nx/nx-linux-arm64-gnu" "18.3.3"
"@nx/nx-linux-arm64-musl" "18.3.2" "@nx/nx-linux-arm64-musl" "18.3.3"
"@nx/nx-linux-x64-gnu" "18.3.2" "@nx/nx-linux-x64-gnu" "18.3.3"
"@nx/nx-linux-x64-musl" "18.3.2" "@nx/nx-linux-x64-musl" "18.3.3"
"@nx/nx-win32-arm64-msvc" "18.3.2" "@nx/nx-win32-arm64-msvc" "18.3.3"
"@nx/nx-win32-x64-msvc" "18.3.2" "@nx/nx-win32-x64-msvc" "18.3.3"
object-assign@^4: object-assign@^4:
version "4.1.1" version "4.1.1"
@ -7750,28 +7750,28 @@ rimraf@^3.0.2:
glob "^7.1.3" glob "^7.1.3"
rollup@^4.2.0: rollup@^4.2.0:
version "4.14.3" version "4.16.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.14.3.tgz#bcbb7784b35826d3164346fa6d5aac95190d8ba9" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.16.2.tgz#43bcbd225d0a6bc68df97a6e41c45003188a3845"
integrity sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw== integrity sha512-sxDP0+pya/Yi5ZtptF4p3avI+uWCIf/OdrfdH2Gbv1kWddLKk0U7WE3PmQokhi5JrektxsK3sK8s4hzAmjqahw==
dependencies: dependencies:
"@types/estree" "1.0.5" "@types/estree" "1.0.5"
optionalDependencies: optionalDependencies:
"@rollup/rollup-android-arm-eabi" "4.14.3" "@rollup/rollup-android-arm-eabi" "4.16.2"
"@rollup/rollup-android-arm64" "4.14.3" "@rollup/rollup-android-arm64" "4.16.2"
"@rollup/rollup-darwin-arm64" "4.14.3" "@rollup/rollup-darwin-arm64" "4.16.2"
"@rollup/rollup-darwin-x64" "4.14.3" "@rollup/rollup-darwin-x64" "4.16.2"
"@rollup/rollup-linux-arm-gnueabihf" "4.14.3" "@rollup/rollup-linux-arm-gnueabihf" "4.16.2"
"@rollup/rollup-linux-arm-musleabihf" "4.14.3" "@rollup/rollup-linux-arm-musleabihf" "4.16.2"
"@rollup/rollup-linux-arm64-gnu" "4.14.3" "@rollup/rollup-linux-arm64-gnu" "4.16.2"
"@rollup/rollup-linux-arm64-musl" "4.14.3" "@rollup/rollup-linux-arm64-musl" "4.16.2"
"@rollup/rollup-linux-powerpc64le-gnu" "4.14.3" "@rollup/rollup-linux-powerpc64le-gnu" "4.16.2"
"@rollup/rollup-linux-riscv64-gnu" "4.14.3" "@rollup/rollup-linux-riscv64-gnu" "4.16.2"
"@rollup/rollup-linux-s390x-gnu" "4.14.3" "@rollup/rollup-linux-s390x-gnu" "4.16.2"
"@rollup/rollup-linux-x64-gnu" "4.14.3" "@rollup/rollup-linux-x64-gnu" "4.16.2"
"@rollup/rollup-linux-x64-musl" "4.14.3" "@rollup/rollup-linux-x64-musl" "4.16.2"
"@rollup/rollup-win32-arm64-msvc" "4.14.3" "@rollup/rollup-win32-arm64-msvc" "4.16.2"
"@rollup/rollup-win32-ia32-msvc" "4.14.3" "@rollup/rollup-win32-ia32-msvc" "4.16.2"
"@rollup/rollup-win32-x64-msvc" "4.14.3" "@rollup/rollup-win32-x64-msvc" "4.16.2"
fsevents "~2.3.2" fsevents "~2.3.2"
run-async@^3.0.0: run-async@^3.0.0:
@ -8412,9 +8412,9 @@ terser@5.29.1:
source-map-support "~0.5.20" source-map-support "~0.5.20"
terser@^5.26.0: terser@^5.26.0:
version "5.30.3" version "5.30.4"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.3.tgz#f1bb68ded42408c316b548e3ec2526d7dd03f4d2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.4.tgz#62b4d16a819424e6317fd5ceffb4ee8dc769803a"
integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA== integrity sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==
dependencies: dependencies:
"@jridgewell/source-map" "^0.3.3" "@jridgewell/source-map" "^0.3.3"
acorn "^8.8.2" acorn "^8.8.2"