speechrecorderng 3.11.11 → 3.11.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,34 +4,34 @@ import { Observable, expand, EMPTY, map, BehaviorSubject } from 'rxjs';
4
4
  import * as i1 from '@angular/common/http';
5
5
  import { HttpErrorResponse, HttpHeaders, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
6
6
  import { timeout } from 'rxjs/operators';
7
- import * as i1$1 from '@angular/common';
7
+ import * as i2 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
- import * as i4$1 from '@angular/material/checkbox';
9
+ import * as i3$1 from '@angular/material/checkbox';
10
10
  import { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';
11
- import * as i2 from '@angular/material/icon';
11
+ import * as i1$1 from '@angular/material/icon';
12
12
  import { MatIconModule } from '@angular/material/icon';
13
- import * as i4 from '@angular/material/tooltip';
13
+ import * as i3 from '@angular/material/tooltip';
14
14
  import { MatTooltipModule } from '@angular/material/tooltip';
15
15
  import * as i1$2 from '@angular/cdk/layout';
16
16
  import { Breakpoints } from '@angular/cdk/layout';
17
17
  import * as i1$3 from '@angular/material/dialog';
18
18
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
19
- import * as i3 from '@angular/material/button';
19
+ import * as i3$2 from '@angular/material/button';
20
20
  import { MatButtonModule } from '@angular/material/button';
21
21
  import { __decorate, __param } from 'tslib';
22
- import * as i3$1 from '@angular/material/progress-spinner';
22
+ import * as i2$1 from '@angular/material/progress-spinner';
23
23
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
24
- import * as i7 from '@angular/material/progress-bar';
24
+ import * as i6 from '@angular/material/progress-bar';
25
25
  import { MatProgressBarModule } from '@angular/material/progress-bar';
26
- import * as i4$2 from '@angular/router';
26
+ import * as i4 from '@angular/router';
27
27
  import { RouterModule } from '@angular/router';
28
- import * as i3$2 from '@angular/material/card';
28
+ import * as i2$2 from '@angular/material/card';
29
29
  import { MatCardModule } from '@angular/material/card';
30
30
  import { MatDividerModule } from '@angular/material/divider';
31
31
  import { MatGridListModule } from '@angular/material/grid-list';
32
- import * as i6 from '@angular/material/snack-bar';
32
+ import * as i6$1 from '@angular/material/snack-bar';
33
33
  import { MatSnackBarModule } from '@angular/material/snack-bar';
34
- import * as i4$3 from '@angular/material/table';
34
+ import * as i4$1 from '@angular/material/table';
35
35
  import { MatTableDataSource, MatTableModule } from '@angular/material/table';
36
36
  import { MatSelectModule } from '@angular/material/select';
37
37
  import { MatInputModule } from '@angular/material/input';
@@ -4962,10 +4962,10 @@ class SpeechRecorderConfig {
4962
4962
  this.apiType = null;
4963
4963
  this.withCredentials = false;
4964
4964
  }
4965
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechRecorderConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4966
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechRecorderConfig }); }
4965
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechRecorderConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4966
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechRecorderConfig }); }
4967
4967
  }
4968
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechRecorderConfig, decorators: [{
4968
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechRecorderConfig, decorators: [{
4969
4969
  type: Injectable
4970
4970
  }], ctorParameters: () => [] });
4971
4971
 
@@ -5016,12 +5016,12 @@ class ProjectService {
5016
5016
  let prjUrl = this.projectUrl(id);
5017
5017
  return this.http.get(prjUrl, { withCredentials: this.withCredentials });
5018
5018
  }
5019
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ProjectService, deps: [{ token: i1.HttpClient }, { token: i1$1.PlatformLocation }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
5020
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ProjectService }); }
5019
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ProjectService, deps: [{ token: i1.HttpClient }, { token: i2.PlatformLocation }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
5020
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ProjectService }); }
5021
5021
  }
5022
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ProjectService, decorators: [{
5022
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ProjectService, decorators: [{
5023
5023
  type: Injectable
5024
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.PlatformLocation }, { type: SpeechRecorderConfig, decorators: [{
5024
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.PlatformLocation }, { type: SpeechRecorderConfig, decorators: [{
5025
5025
  type: Inject,
5026
5026
  args: [SPEECHRECORDER_CONFIG]
5027
5027
  }] }] });
@@ -5077,10 +5077,10 @@ class SessionService {
5077
5077
  });
5078
5078
  return wrapObs;
5079
5079
  }
5080
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SessionService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
5081
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SessionService }); }
5080
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SessionService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
5081
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SessionService }); }
5082
5082
  }
5083
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SessionService, decorators: [{
5083
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SessionService, decorators: [{
5084
5084
  type: Injectable
5085
5085
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
5086
5086
  type: Inject,
@@ -5118,8 +5118,8 @@ class SimpleTrafficLight {
5118
5118
  this.lightbottom = 'grey';
5119
5119
  }
5120
5120
  }
5121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SimpleTrafficLight, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: SimpleTrafficLight, isStandalone: false, selector: "app-simpletrafficlight", inputs: { status: "status" }, ngImport: i0, template: `
5121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SimpleTrafficLight, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: SimpleTrafficLight, isStandalone: false, selector: "app-simpletrafficlight", inputs: { status: "status" }, ngImport: i0, template: `
5123
5123
 
5124
5124
  <div>
5125
5125
  <div class="circle {{lighttop}}"></div>
@@ -5128,7 +5128,7 @@ class SimpleTrafficLight {
5128
5128
  </div>
5129
5129
  `, isInline: true, styles: [".circle{width:50px;height:50px;border-radius:50%;margin:5px;background:gray}\n", ".red{background:red}\n", ".yellow{background:#ff0}\n", ".green{background:green}\n", ".black{background:#000}\n", ":host{display:flex;flex-direction:column;background:#000;padding:2px;height:170px;max-height:170px;flex:0 0 content}\n"] }); }
5130
5130
  }
5131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SimpleTrafficLight, decorators: [{
5131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SimpleTrafficLight, decorators: [{
5132
5132
  type: Component,
5133
5133
  args: [{ selector: 'app-simpletrafficlight', template: `
5134
5134
 
@@ -5198,10 +5198,10 @@ class CanvasLayerComponent {
5198
5198
  return virtualPos;
5199
5199
  }
5200
5200
  }
5201
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: CanvasLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5202
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: CanvasLayerComponent, isStandalone: true, ngImport: i0 }); }
5201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CanvasLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5202
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.2", type: CanvasLayerComponent, isStandalone: true, ngImport: i0 }); }
5203
5203
  }
5204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: CanvasLayerComponent, decorators: [{
5204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CanvasLayerComponent, decorators: [{
5205
5205
  type: Directive
5206
5206
  }], ctorParameters: () => [] });
5207
5207
 
@@ -5440,10 +5440,10 @@ class BasicAudioCanvasLayerComponent extends CanvasLayerComponent {
5440
5440
  }
5441
5441
  }
5442
5442
  }
5443
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BasicAudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5444
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: BasicAudioCanvasLayerComponent, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
5443
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: BasicAudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5444
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.2", type: BasicAudioCanvasLayerComponent, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
5445
5445
  }
5446
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BasicAudioCanvasLayerComponent, decorators: [{
5446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: BasicAudioCanvasLayerComponent, decorators: [{
5447
5447
  type: Directive
5448
5448
  }] });
5449
5449
  class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
@@ -5619,10 +5619,10 @@ class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
5619
5619
  }
5620
5620
  }
5621
5621
  }
5622
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5623
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: AudioCanvasLayerComponent, isStandalone: true, inputs: { pointerPosition: "pointerPosition", selecting: "selecting", selection: "selection" }, outputs: { pointerPositionEventEmitter: "pointerPositionEventEmitter", selectingEventEmitter: "selectingEventEmitter", selectedEventEmitter: "selectedEventEmitter" }, host: { listeners: { "document:mouseup": "onMouseup($event)" } }, viewQueries: [{ propertyName: "bgCanvasRef", first: true, predicate: ["bg"], descendants: true, static: true }, { propertyName: "cursorCanvasRef", first: true, predicate: ["cursor"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 }); }
5622
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5623
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.2", type: AudioCanvasLayerComponent, isStandalone: true, inputs: { pointerPosition: "pointerPosition", selecting: "selecting", selection: "selection" }, outputs: { pointerPositionEventEmitter: "pointerPositionEventEmitter", selectingEventEmitter: "selectingEventEmitter", selectedEventEmitter: "selectedEventEmitter" }, host: { listeners: { "document:mouseup": "onMouseup($event)" } }, viewQueries: [{ propertyName: "bgCanvasRef", first: true, predicate: ["bg"], descendants: true, static: true }, { propertyName: "cursorCanvasRef", first: true, predicate: ["cursor"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 }); }
5624
5624
  }
5625
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioCanvasLayerComponent, decorators: [{
5625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioCanvasLayerComponent, decorators: [{
5626
5626
  type: Directive
5627
5627
  }], propDecorators: { bgCanvasRef: [{
5628
5628
  type: ViewChild,
@@ -6151,15 +6151,15 @@ class AudioSignal extends AudioCanvasLayerComponent {
6151
6151
  this._audioDataHolder = audioData;
6152
6152
  this.playFramePosition = 0;
6153
6153
  }
6154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioSignal, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
6155
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioSignal, isStandalone: false, selector: "audio-signal", viewQueries: [{ propertyName: "audioSignalCanvasRef", first: true, predicate: ["audioSignal"], descendants: true, static: true }, { propertyName: "playPosCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
6154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioSignal, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
6155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: AudioSignal, isStandalone: false, selector: "audio-signal", viewQueries: [{ propertyName: "audioSignalCanvasRef", first: true, predicate: ["audioSignal"], descendants: true, static: true }, { propertyName: "playPosCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
6156
6156
  <canvas #bg height="10"></canvas>
6157
6157
  <canvas #audioSignal height="10"></canvas>
6158
6158
  <canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
6159
6159
  (mouseleave)="updateCursorCanvas($event, false)"></canvas>
6160
6160
  <canvas #marker height="10"></canvas>`, isInline: true, styles: [":host{min-height:0px}\n", "canvas{top:0;left:0;width:0;height:0;min-height:0px;position:absolute}\n"] }); }
6161
6161
  }
6162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioSignal, decorators: [{
6162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioSignal, decorators: [{
6163
6163
  type: Component,
6164
6164
  args: [{ selector: 'audio-signal', template: `
6165
6165
  <canvas #bg height="10"></canvas>
@@ -7297,15 +7297,15 @@ class Sonagram extends AudioCanvasLayerComponent {
7297
7297
  this._audioDataHolder = audioData;
7298
7298
  this.playFramePosition = 0;
7299
7299
  }
7300
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Sonagram, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7301
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: Sonagram, isStandalone: false, selector: "audio-sonagram", viewQueries: [{ propertyName: "sonagramCanvasRef", first: true, predicate: ["sonagram"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
7300
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Sonagram, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7301
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: Sonagram, isStandalone: false, selector: "audio-sonagram", viewQueries: [{ propertyName: "sonagramCanvasRef", first: true, predicate: ["sonagram"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
7302
7302
  <canvas #sonagram height="10"></canvas>
7303
7303
  <canvas #bg height="10"></canvas>
7304
7304
  <canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
7305
7305
  (mouseleave)="updateCursorCanvas($event, false)"></canvas>
7306
7306
  <canvas #marker height="10"></canvas>`, isInline: true, styles: [":host{min-height:0px}\n", "canvas{top:0;left:0;width:0;height:0;min-height:0px;position:absolute}\n"] }); }
7307
7307
  }
7308
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Sonagram, decorators: [{
7308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Sonagram, decorators: [{
7309
7309
  type: Component,
7310
7310
  args: [{ selector: 'audio-sonagram', template: `
7311
7311
  <canvas #sonagram height="10"></canvas>
@@ -7676,8 +7676,8 @@ class AudioClipUIContainer extends BasicAudioCanvasLayerComponent {
7676
7676
  this.as.playFramePosition = playFramePosition;
7677
7677
  this.so.playFramePosition = playFramePosition;
7678
7678
  }
7679
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioClipUIContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7680
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioClipUIContainer, isStandalone: false, selector: "app-audio", inputs: { audioData: "audioData", audioClip: "audioClip" }, outputs: { selectionEventEmitter: "selectionEventEmitter" }, host: { listeners: { "window:resize": "onResize($event)", "document:mouseup": "onMouseup($event)", "document:mousemove": "onMousemove($event)" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["divider"], descendants: true, static: true }, { propertyName: "ceRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "as", first: true, predicate: AudioSignal, descendants: true, static: true }, { propertyName: "so", first: true, predicate: Sonagram, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
7679
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioClipUIContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7680
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: AudioClipUIContainer, isStandalone: false, selector: "app-audio", inputs: { audioData: "audioData", audioClip: "audioClip" }, outputs: { selectionEventEmitter: "selectionEventEmitter" }, host: { listeners: { "window:resize": "onResize($event)", "document:mouseup": "onMouseup($event)", "document:mousemove": "onMousemove($event)" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["divider"], descendants: true, static: true }, { propertyName: "ceRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "as", first: true, predicate: AudioSignal, descendants: true, static: true }, { propertyName: "so", first: true, predicate: Sonagram, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
7681
7681
  <div #virtualCanvas>
7682
7682
  <canvas #divider (mousedown)="mousedown($event)" (mouseover)="mouseover($event)"
7683
7683
  (mouseleave)="mouseleave($event)" height="10"></canvas>
@@ -7686,7 +7686,7 @@ class AudioClipUIContainer extends BasicAudioCanvasLayerComponent {
7686
7686
  </div>
7687
7687
  `, isInline: true, styles: ["div{margin:0;padding:0;top:0;left:0;width:100%;height:100%;position:relative;box-sizing:border-box;transform:none;overflow:hidden}\n", "canvas{top:0;left:0;width:0;height:0;cursor:ns-resize;position:absolute;z-index:1;transform:none}\n", "audio-signal{top:0;left:0;position:absolute;z-index:1;transform:none}\n", "audio-sonagram{top:0;left:0;position:absolute;z-index:1;transform:none}\n"], dependencies: [{ kind: "component", type: AudioSignal, selector: "audio-signal" }, { kind: "component", type: Sonagram, selector: "audio-sonagram" }] }); }
7688
7688
  }
7689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioClipUIContainer, decorators: [{
7689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioClipUIContainer, decorators: [{
7690
7690
  type: Component,
7691
7691
  args: [{ selector: 'app-audio', template: `
7692
7692
  <div #virtualCanvas>
@@ -7830,14 +7830,14 @@ class AudioDisplayScrollPane {
7830
7830
  set playFramePosition(framePos) {
7831
7831
  this.ac.playFramePosition = framePos;
7832
7832
  }
7833
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplayScrollPane, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7834
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioDisplayScrollPane, isStandalone: false, selector: "audio-display-scroll-pane", inputs: { audioClip: "audioClip" }, outputs: { zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomSelectedAction: "zoomSelectedAction", zoomFitToPanelAction: "zoomFitToPanelAction" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "ac", first: true, predicate: AudioClipUIContainer, descendants: true, static: true }], ngImport: i0, template: `
7833
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplayScrollPane, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7834
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: AudioDisplayScrollPane, isStandalone: false, selector: "audio-display-scroll-pane", inputs: { audioClip: "audioClip" }, outputs: { zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomSelectedAction: "zoomSelectedAction", zoomFitToPanelAction: "zoomFitToPanelAction" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "ac", first: true, predicate: AudioClipUIContainer, descendants: true, static: true }], ngImport: i0, template: `
7835
7835
 
7836
7836
  <app-audio #audioSignalContainer (selectionEventEmitter)="selectionChanged($event)"></app-audio>
7837
7837
 
7838
7838
  `, isInline: true, styles: [":host{flex:2;width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "app-audio{margin:0;padding:0;top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "component", type: AudioClipUIContainer, selector: "app-audio", inputs: ["audioData", "audioClip"], outputs: ["selectionEventEmitter"] }] }); }
7839
7839
  }
7840
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplayScrollPane, decorators: [{
7840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplayScrollPane, decorators: [{
7841
7841
  type: Component,
7842
7842
  args: [{ selector: 'audio-display-scroll-pane', template: `
7843
7843
 
@@ -7893,97 +7893,99 @@ class AudioDisplayControl {
7893
7893
  error() {
7894
7894
  this.status = 'ERROR';
7895
7895
  }
7896
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplayControl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7897
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioDisplayControl, isStandalone: false, selector: "audio-display-control", inputs: { audioClip: "audioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", playStopAction: "playStopAction", zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomFitToPanelAction: "zoomFitToPanelAction", zoomSelectedAction: "zoomSelectedAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction" }, viewQueries: [{ propertyName: "autoplaySelectedCheckbox", first: true, predicate: MatCheckbox, descendants: true, static: true }], ngImport: i0, template: `
7896
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplayControl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7897
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: AudioDisplayControl, isStandalone: false, selector: "audio-display-control", inputs: { audioClip: "audioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", playStopAction: "playStopAction", zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomFitToPanelAction: "zoomFitToPanelAction", zoomSelectedAction: "zoomSelectedAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction" }, viewQueries: [{ propertyName: "autoplaySelectedCheckbox", first: true, predicate: MatCheckbox, descendants: true, static: true }], ngImport: i0, template: `
7898
7898
  <div #controlPanel style="display:flex;flex-direction: row;">
7899
- <fieldset>
7899
+ <fieldset>
7900
7900
 
7901
- <legend>Play</legend>
7901
+ <legend>Play</legend>
7902
7902
 
7903
- <button (click)="playStartAction?.perform()" [disabled]="playStartAction?.disabled"
7904
- [style.color]="playStartAction?.disabled ? 'grey' : 'green'" matTooltip="Play all">
7905
- <mat-icon>play_arrow</mat-icon>
7906
- </button>
7907
- <button (click)="playSelectionAction?.perform()" [disabled]="playSelectionAction?.disabled"
7908
- [style.color]="playSelectionAction?.disabled ? 'grey' : 'green'" matTooltip="Play selection">
7909
- <mat-icon>play_circle_outline</mat-icon>
7910
- </button>
7911
- <button (click)="playStopAction?.perform()" [disabled]="playStopAction?.disabled"
7912
- [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
7913
- <mat-icon>stop</mat-icon>
7914
- </button>&nbsp;
7915
- <mat-checkbox #autoplaySelectionCheckbox (change)="autoPlaySelectionChange($event)">Autoplay on select
7916
- </mat-checkbox>
7917
- </fieldset>
7918
- <fieldset>
7903
+ <button (click)="playStartAction?.perform()" [disabled]="playStartAction?.disabled"
7904
+ [style.color]="playStartAction?.disabled ? 'grey' : 'green'" matTooltip="Play all">
7905
+ <mat-icon>play_arrow</mat-icon>
7906
+ </button>
7907
+ <button (click)="playSelectionAction?.perform()" [disabled]="playSelectionAction?.disabled"
7908
+ [style.color]="playSelectionAction?.disabled ? 'grey' : 'green'" matTooltip="Play selection">
7909
+ <mat-icon>play_circle_outline</mat-icon>
7910
+ </button>
7911
+ <button (click)="playStopAction?.perform()" [disabled]="playStopAction?.disabled"
7912
+ [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
7913
+ <mat-icon>stop</mat-icon>
7914
+ </button>&nbsp;
7915
+ <mat-checkbox #autoplaySelectionCheckbox (change)="autoPlaySelectionChange($event)">Autoplay on select
7916
+ </mat-checkbox>
7917
+ </fieldset>
7918
+ <fieldset>
7919
7919
 
7920
- <legend>Zoom</legend>
7921
- <button (click)="zoomFitToPanelAction?.perform()"
7922
- [disabled]="zoomFitToPanelAction?.disabled">{{zoomFitToPanelAction?.name}}</button>
7923
- <button (click)="zoomOutAction?.perform()"
7924
- [disabled]="zoomOutAction?.disabled">{{zoomOutAction?.name}}</button>
7925
- <button (click)="zoomInAction?.perform()"
7926
- [disabled]="zoomInAction?.disabled">{{zoomInAction?.name}}</button>
7927
- <button (click)="zoomSelectedAction?.perform()"
7928
- [disabled]="zoomSelectedAction?.disabled">{{zoomSelectedAction?.name}}</button>
7929
- </fieldset>
7930
- <fieldset>
7931
- <legend>Selection</legend>
7932
- {{audioClip?.selection?.leftFrame}} <span
7933
- *ngIf="audioClip?.selection">to</span> {{audioClip?.selection?.rightFrame}}
7934
- <button (click)="clearSelection()" [disabled]="audioClip?.selection==null"
7935
- [style.color]="hasSelection() ? 'red' : 'grey'" matTooltip="Clear selection">
7936
- <mat-icon>clear</mat-icon>
7937
- </button>
7920
+ <legend>Zoom</legend>
7921
+ <button (click)="zoomFitToPanelAction?.perform()"
7922
+ [disabled]="zoomFitToPanelAction?.disabled">{{zoomFitToPanelAction?.name}}</button>
7923
+ <button (click)="zoomOutAction?.perform()"
7924
+ [disabled]="zoomOutAction?.disabled">{{zoomOutAction?.name}}</button>
7925
+ <button (click)="zoomInAction?.perform()"
7926
+ [disabled]="zoomInAction?.disabled">{{zoomInAction?.name}}</button>
7927
+ <button (click)="zoomSelectedAction?.perform()"
7928
+ [disabled]="zoomSelectedAction?.disabled">{{zoomSelectedAction?.name}}</button>
7929
+ </fieldset>
7930
+ <fieldset>
7931
+ <legend>Selection</legend>
7932
+ {{audioClip?.selection?.leftFrame}} @if (audioClip?.selection) {
7933
+ <span>to</span>
7934
+ } {{audioClip?.selection?.rightFrame}}
7935
+ <button (click)="clearSelection()" [disabled]="audioClip?.selection==null"
7936
+ [style.color]="hasSelection() ? 'red' : 'grey'" matTooltip="Clear selection">
7937
+ <mat-icon>clear</mat-icon>
7938
+ </button>
7938
7939
 
7939
- </fieldset>
7940
- </div>`, isInline: true, styles: [":host{flex:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
7940
+ </fieldset>
7941
+ </div>`, isInline: true, styles: [":host{flex:0}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
7941
7942
  }
7942
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplayControl, decorators: [{
7943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplayControl, decorators: [{
7943
7944
  type: Component,
7944
7945
  args: [{ selector: 'audio-display-control', template: `
7945
7946
  <div #controlPanel style="display:flex;flex-direction: row;">
7946
- <fieldset>
7947
+ <fieldset>
7947
7948
 
7948
- <legend>Play</legend>
7949
+ <legend>Play</legend>
7949
7950
 
7950
- <button (click)="playStartAction?.perform()" [disabled]="playStartAction?.disabled"
7951
- [style.color]="playStartAction?.disabled ? 'grey' : 'green'" matTooltip="Play all">
7952
- <mat-icon>play_arrow</mat-icon>
7953
- </button>
7954
- <button (click)="playSelectionAction?.perform()" [disabled]="playSelectionAction?.disabled"
7955
- [style.color]="playSelectionAction?.disabled ? 'grey' : 'green'" matTooltip="Play selection">
7956
- <mat-icon>play_circle_outline</mat-icon>
7957
- </button>
7958
- <button (click)="playStopAction?.perform()" [disabled]="playStopAction?.disabled"
7959
- [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
7960
- <mat-icon>stop</mat-icon>
7961
- </button>&nbsp;
7962
- <mat-checkbox #autoplaySelectionCheckbox (change)="autoPlaySelectionChange($event)">Autoplay on select
7963
- </mat-checkbox>
7964
- </fieldset>
7965
- <fieldset>
7951
+ <button (click)="playStartAction?.perform()" [disabled]="playStartAction?.disabled"
7952
+ [style.color]="playStartAction?.disabled ? 'grey' : 'green'" matTooltip="Play all">
7953
+ <mat-icon>play_arrow</mat-icon>
7954
+ </button>
7955
+ <button (click)="playSelectionAction?.perform()" [disabled]="playSelectionAction?.disabled"
7956
+ [style.color]="playSelectionAction?.disabled ? 'grey' : 'green'" matTooltip="Play selection">
7957
+ <mat-icon>play_circle_outline</mat-icon>
7958
+ </button>
7959
+ <button (click)="playStopAction?.perform()" [disabled]="playStopAction?.disabled"
7960
+ [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
7961
+ <mat-icon>stop</mat-icon>
7962
+ </button>&nbsp;
7963
+ <mat-checkbox #autoplaySelectionCheckbox (change)="autoPlaySelectionChange($event)">Autoplay on select
7964
+ </mat-checkbox>
7965
+ </fieldset>
7966
+ <fieldset>
7966
7967
 
7967
- <legend>Zoom</legend>
7968
- <button (click)="zoomFitToPanelAction?.perform()"
7969
- [disabled]="zoomFitToPanelAction?.disabled">{{zoomFitToPanelAction?.name}}</button>
7970
- <button (click)="zoomOutAction?.perform()"
7971
- [disabled]="zoomOutAction?.disabled">{{zoomOutAction?.name}}</button>
7972
- <button (click)="zoomInAction?.perform()"
7973
- [disabled]="zoomInAction?.disabled">{{zoomInAction?.name}}</button>
7974
- <button (click)="zoomSelectedAction?.perform()"
7975
- [disabled]="zoomSelectedAction?.disabled">{{zoomSelectedAction?.name}}</button>
7976
- </fieldset>
7977
- <fieldset>
7978
- <legend>Selection</legend>
7979
- {{audioClip?.selection?.leftFrame}} <span
7980
- *ngIf="audioClip?.selection">to</span> {{audioClip?.selection?.rightFrame}}
7981
- <button (click)="clearSelection()" [disabled]="audioClip?.selection==null"
7982
- [style.color]="hasSelection() ? 'red' : 'grey'" matTooltip="Clear selection">
7983
- <mat-icon>clear</mat-icon>
7984
- </button>
7968
+ <legend>Zoom</legend>
7969
+ <button (click)="zoomFitToPanelAction?.perform()"
7970
+ [disabled]="zoomFitToPanelAction?.disabled">{{zoomFitToPanelAction?.name}}</button>
7971
+ <button (click)="zoomOutAction?.perform()"
7972
+ [disabled]="zoomOutAction?.disabled">{{zoomOutAction?.name}}</button>
7973
+ <button (click)="zoomInAction?.perform()"
7974
+ [disabled]="zoomInAction?.disabled">{{zoomInAction?.name}}</button>
7975
+ <button (click)="zoomSelectedAction?.perform()"
7976
+ [disabled]="zoomSelectedAction?.disabled">{{zoomSelectedAction?.name}}</button>
7977
+ </fieldset>
7978
+ <fieldset>
7979
+ <legend>Selection</legend>
7980
+ {{audioClip?.selection?.leftFrame}} @if (audioClip?.selection) {
7981
+ <span>to</span>
7982
+ } {{audioClip?.selection?.rightFrame}}
7983
+ <button (click)="clearSelection()" [disabled]="audioClip?.selection==null"
7984
+ [style.color]="hasSelection() ? 'red' : 'grey'" matTooltip="Clear selection">
7985
+ <mat-icon>clear</mat-icon>
7986
+ </button>
7985
7987
 
7986
- </fieldset>
7988
+ </fieldset>
7987
7989
  </div>`, standalone: false, styles: [":host{flex:0}\n"] }]
7988
7990
  }], ctorParameters: () => [], propDecorators: { audioClip: [{
7989
7991
  type: Input
@@ -8071,8 +8073,8 @@ class AudioDisplay {
8071
8073
  error() {
8072
8074
  this.status = 'ERROR';
8073
8075
  }
8074
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplay, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8075
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioDisplay, isStandalone: false, selector: "app-audiodisplay", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0, template: `
8076
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplay, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8077
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: AudioDisplay, isStandalone: false, selector: "app-audiodisplay", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0, template: `
8076
8078
 
8077
8079
  <audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
8078
8080
 
@@ -8087,7 +8089,7 @@ class AudioDisplay {
8087
8089
  [zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
8088
8090
  `, isInline: true, styles: [":host{display:flex;flex-direction:column;position:absolute;bottom:0;height:100%;width:100%;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#e6e6e6}\n", "legend{margin-left:1em;padding:.2em .8em;font-size:.8em}\n", "fieldset{border:1px darkgray solid}\n"], dependencies: [{ kind: "component", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }] }); }
8089
8091
  }
8090
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplay, decorators: [{
8092
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplay, decorators: [{
8091
8093
  type: Component,
8092
8094
  args: [{ selector: 'app-audiodisplay', template: `
8093
8095
 
@@ -8133,10 +8135,10 @@ class ResponsiveComponent {
8133
8135
  //console.debug("Screen XS: "+this.screenXs);
8134
8136
  });
8135
8137
  }
8136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ResponsiveComponent, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Directive }); }
8137
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: ResponsiveComponent, isStandalone: true, ngImport: i0 }); }
8138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ResponsiveComponent, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Directive }); }
8139
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.2", type: ResponsiveComponent, isStandalone: true, ngImport: i0 }); }
8138
8140
  }
8139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ResponsiveComponent, decorators: [{
8141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ResponsiveComponent, decorators: [{
8140
8142
  type: Directive
8141
8143
  }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }] });
8142
8144
 
@@ -8157,10 +8159,10 @@ class IntersectionObserverDirective {
8157
8159
  elIntersection.observer.unobserve(this.elRef.nativeElement);
8158
8160
  }
8159
8161
  }
8160
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: IntersectionObserverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8161
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: IntersectionObserverDirective, isStandalone: true, selector: "[updateObservation]", inputs: { updateObservation: "updateObservation" }, ngImport: i0 }); }
8162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: IntersectionObserverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8163
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.2", type: IntersectionObserverDirective, isStandalone: true, selector: "[updateObservation]", inputs: { updateObservation: "updateObservation" }, ngImport: i0 }); }
8162
8164
  }
8163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: IntersectionObserverDirective, decorators: [{
8165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: IntersectionObserverDirective, decorators: [{
8164
8166
  type: Directive,
8165
8167
  args: [{
8166
8168
  selector: '[updateObservation]',
@@ -8218,68 +8220,72 @@ class Progress {
8218
8220
  }
8219
8221
  return cached;
8220
8222
  }
8221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Progress, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: Progress, isStandalone: false, selector: "app-sprprogress", inputs: { items: "items", selectedItemIdx: "selectedItemIdx", enableDownload: "enableDownload" }, outputs: { onRowSelect: "onRowSelect", rowSelect: "rowSelect", onShowDoneAction: "onShowDoneAction", clickDone: "clickDone", onDownloadDoneAction: "onDownloadDoneAction", clickDownloadDone: "clickDownloadDone" }, ngImport: i0, template: `
8223
-
8224
- <table class="mat-typography">
8225
- <thead>
8226
- <tr>
8227
- <th>#</th><!--<th>Code</th>-->
8228
- <th>Prompt</th>
8229
- <th>Status</th>
8230
- </tr>
8231
- </thead>
8232
- <tbody>
8233
- <ng-container *ngIf="items">
8223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Progress, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: Progress, isStandalone: false, selector: "app-sprprogress", inputs: { items: "items", selectedItemIdx: "selectedItemIdx", enableDownload: "enableDownload" }, outputs: { onRowSelect: "onRowSelect", rowSelect: "rowSelect", onShowDoneAction: "onShowDoneAction", clickDone: "clickDone", onDownloadDoneAction: "onDownloadDoneAction", clickDownloadDone: "clickDownloadDone" }, ngImport: i0, template: `
8234
8225
 
8235
- <tr *ngFor="let item of items; let itIdx=index;"
8236
- (click)="rowSelect=itIdx" [class.selRow]="itIdx===selectedItemIdx"
8237
- [updateObservation]="{observer:isObs,observe:(itIdx===selectedItemIdx)}">
8226
+ <table class="mat-typography">
8227
+ <thead>
8228
+ <tr>
8229
+ <th>#</th><!--<th>Code</th>-->
8230
+ <th>Prompt</th>
8231
+ <th>Status</th>
8232
+ </tr>
8233
+ </thead>
8234
+ <tbody>
8235
+ @if (items) {
8236
+ @for (item of items; track item; let itIdx = $index) {
8237
+ <tr
8238
+ (click)="rowSelect=itIdx" [class.selRow]="itIdx===selectedItemIdx"
8239
+ [updateObservation]="{observer:isObs,observe:(itIdx===selectedItemIdx)}">
8238
8240
  <td>{{itIdx}}</td>
8239
8241
  <td class="promptDescriptor">{{item.promptAsString}}</td>
8240
8242
  <td>
8241
- <mat-icon *ngIf="item.itemDone()">done</mat-icon>
8243
+ @if (item.itemDone()) {
8244
+ <mat-icon >done</mat-icon>
8245
+ }
8242
8246
  <!--<mat-icon *ngIf="latestRecordingAvail(item)===false" style="font-size:0.6em;width:0.6em;height:0.6em">cloud_download</mat-icon>-->
8243
-
8244
8247
  </td>
8245
8248
  </tr>
8246
- </ng-container>
8249
+ }
8250
+ }
8247
8251
 
8248
- </tbody>
8249
- </table>
8250
- `, isInline: true, styles: [":host{overflow-x:hidden;overflow-y:scroll;padding:10pt;flex:.1 0 content;background:#fff;min-height:1px}\n", "table{min-height:1px;border-collapse:collapse}table,th,td{border:1px solid lightgrey;padding:.5em}\n", ".selRow{background:#add8e6}\n", ".promptDescriptor{max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: IntersectionObserverDirective, selector: "[updateObservation]", inputs: ["updateObservation"] }] }); }
8252
+ </tbody>
8253
+ </table>
8254
+ `, isInline: true, styles: [":host{overflow-x:hidden;overflow-y:scroll;padding:10pt;flex:.1 0 content;background:#fff;min-height:1px}\n", "table{min-height:1px;border-collapse:collapse}table,th,td{border:1px solid lightgrey;padding:.5em}\n", ".selRow{background:#add8e6}\n", ".promptDescriptor{max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: IntersectionObserverDirective, selector: "[updateObservation]", inputs: ["updateObservation"] }] }); }
8251
8255
  }
8252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Progress, decorators: [{
8256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Progress, decorators: [{
8253
8257
  type: Component,
8254
8258
  args: [{ selector: 'app-sprprogress', template: `
8255
8259
 
8256
- <table class="mat-typography">
8257
- <thead>
8258
- <tr>
8259
- <th>#</th><!--<th>Code</th>-->
8260
- <th>Prompt</th>
8261
- <th>Status</th>
8262
- </tr>
8263
- </thead>
8264
- <tbody>
8265
- <ng-container *ngIf="items">
8266
-
8267
- <tr *ngFor="let item of items; let itIdx=index;"
8268
- (click)="rowSelect=itIdx" [class.selRow]="itIdx===selectedItemIdx"
8269
- [updateObservation]="{observer:isObs,observe:(itIdx===selectedItemIdx)}">
8260
+ <table class="mat-typography">
8261
+ <thead>
8262
+ <tr>
8263
+ <th>#</th><!--<th>Code</th>-->
8264
+ <th>Prompt</th>
8265
+ <th>Status</th>
8266
+ </tr>
8267
+ </thead>
8268
+ <tbody>
8269
+ @if (items) {
8270
+ @for (item of items; track item; let itIdx = $index) {
8271
+ <tr
8272
+ (click)="rowSelect=itIdx" [class.selRow]="itIdx===selectedItemIdx"
8273
+ [updateObservation]="{observer:isObs,observe:(itIdx===selectedItemIdx)}">
8270
8274
  <td>{{itIdx}}</td>
8271
8275
  <td class="promptDescriptor">{{item.promptAsString}}</td>
8272
8276
  <td>
8273
- <mat-icon *ngIf="item.itemDone()">done</mat-icon>
8277
+ @if (item.itemDone()) {
8278
+ <mat-icon >done</mat-icon>
8279
+ }
8274
8280
  <!--<mat-icon *ngIf="latestRecordingAvail(item)===false" style="font-size:0.6em;width:0.6em;height:0.6em">cloud_download</mat-icon>-->
8275
-
8276
8281
  </td>
8277
8282
  </tr>
8278
- </ng-container>
8283
+ }
8284
+ }
8279
8285
 
8280
- </tbody>
8281
- </table>
8282
- `, standalone: false, styles: [":host{overflow-x:hidden;overflow-y:scroll;padding:10pt;flex:.1 0 content;background:#fff;min-height:1px}\n", "table{min-height:1px;border-collapse:collapse}table,th,td{border:1px solid lightgrey;padding:.5em}\n", ".selRow{background:#add8e6}\n", ".promptDescriptor{max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}\n"] }]
8286
+ </tbody>
8287
+ </table>
8288
+ `, standalone: false, styles: [":host{overflow-x:hidden;overflow-y:scroll;padding:10pt;flex:.1 0 content;background:#fff;min-height:1px}\n", "table{min-height:1px;border-collapse:collapse}table,th,td{border:1px solid lightgrey;padding:.5em}\n", ".selRow{background:#add8e6}\n", ".promptDescriptor{max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}\n"] }]
8283
8289
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { items: [{
8284
8290
  type: Input
8285
8291
  }], selectedItemIdx: [{
@@ -8311,13 +8317,13 @@ class Recinstructions {
8311
8317
  }
8312
8318
  return riTxt;
8313
8319
  }
8314
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Recinstructions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8315
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: Recinstructions, isStandalone: false, selector: "spr-recinstructions", inputs: { recinstructions: "recinstructions", selectedItemIdx: "selectedItemIdx", itemCount: "itemCount" }, ngImport: i0, template: `
8320
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Recinstructions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8321
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: Recinstructions, isStandalone: false, selector: "spr-recinstructions", inputs: { recinstructions: "recinstructions", selectedItemIdx: "selectedItemIdx", itemCount: "itemCount" }, ngImport: i0, template: `
8316
8322
 
8317
8323
  {{displayText()}}
8318
8324
  `, isInline: true, styles: [":host{justify-content:left;align-items:flex-start;background:#fff;text-align:left;font-size:1em;flex:0;width:100%}\n"] }); }
8319
8325
  }
8320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Recinstructions, decorators: [{
8326
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Recinstructions, decorators: [{
8321
8327
  type: Component,
8322
8328
  args: [{ selector: 'spr-recinstructions', template: `
8323
8329
 
@@ -8490,14 +8496,14 @@ class Prompter {
8490
8496
  this._src = null;
8491
8497
  }
8492
8498
  }
8493
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Prompter, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ProjectService }], target: i0.ɵɵFactoryTarget.Component }); }
8494
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: Prompter, isStandalone: false, selector: "app-sprprompter", inputs: { projectName: "projectName", prompterHeight: "prompterHeight", promptMediaItems: "promptMediaItems" }, host: { properties: { "class.fill": "this.prompterStyleFill" } }, ngImport: i0, template: `
8499
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Prompter, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ProjectService }], target: i0.ɵɵFactoryTarget.Component }); }
8500
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: Prompter, isStandalone: false, selector: "app-sprprompter", inputs: { projectName: "projectName", prompterHeight: "prompterHeight", promptMediaItems: "promptMediaItems" }, host: { properties: { "class.fill": "this.prompterStyleFill" } }, ngImport: i0, template: `
8495
8501
 
8496
8502
  <!--<ng-template [ngIf]="text">{{text}}</ng-template>-->
8497
8503
  <!-- <img *ngIf="src" #promptImage [src]="srcUrl()" [height]="prompterHeight-20" /> -->
8498
8504
  `, isInline: true, styles: [":host{justify-content:center;align-items:center;background:#fff;text-align:center;line-height:1.2em;font-weight:700;flex:0 1}\n", ":host(.fill){flex:3;width:100%;height:100%;max-height:100%;max-width:100%;vertical-align:middle}\n"] }); }
8499
8505
  }
8500
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Prompter, decorators: [{
8506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Prompter, decorators: [{
8501
8507
  type: Component,
8502
8508
  args: [{ selector: 'app-sprprompter', template: `
8503
8509
 
@@ -8643,12 +8649,12 @@ class PromptContainer {
8643
8649
  }
8644
8650
  }
8645
8651
  }
8646
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PromptContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8647
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: PromptContainer, isStandalone: false, selector: "app-sprpromptcontainer", inputs: { projectName: "projectName", mediaitems: "mediaitems" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "prompter", first: true, predicate: Prompter, descendants: true, static: true }], ngImport: i0, template: `
8652
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: PromptContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8653
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: PromptContainer, isStandalone: false, selector: "app-sprpromptcontainer", inputs: { projectName: "projectName", mediaitems: "mediaitems" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "prompter", first: true, predicate: Prompter, descendants: true, static: true }], ngImport: i0, template: `
8648
8654
  <app-sprprompter #prompter [projectName]="projectName" [promptMediaItems]="mediaitems" [style.font-size]="fontSize+'px'" [style.visibility]="prDisplay" [prompterHeight]="prompterHeight"></app-sprprompter>
8649
8655
  `, isInline: true, styles: [":host{flex:3;padding:10pt;height:100%;max-height:100%;justify-content:center;align-items:center;background:#fff;text-align:center;display:flex;flex-direction:column;min-height:0px;width:100%}\n"], dependencies: [{ kind: "component", type: Prompter, selector: "app-sprprompter", inputs: ["projectName", "prompterHeight", "promptMediaItems"] }] }); }
8650
8656
  }
8651
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PromptContainer, decorators: [{
8657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: PromptContainer, decorators: [{
8652
8658
  type: Component,
8653
8659
  args: [{ selector: 'app-sprpromptcontainer', template: `
8654
8660
  <app-sprprompter #prompter [projectName]="projectName" [promptMediaItems]="mediaitems" [style.font-size]="fontSize+'px'" [style.visibility]="prDisplay" [prompterHeight]="prompterHeight"></app-sprprompter>
@@ -8770,8 +8776,8 @@ class PromptingContainer {
8770
8776
  this.e.style.left = "0px";
8771
8777
  //ev.preventDefault();
8772
8778
  }
8773
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PromptingContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8774
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: PromptingContainer, isStandalone: false, selector: "app-sprpromptingcontainer", inputs: { projectName: "projectName", promptItem: "promptItem", showPrompt: "showPrompt", selectedItemIdx: "selectedItemIdx", itemCount: "itemCount", transportActions: "transportActions" }, host: { listeners: { "touchstart": "onTouchstart($event)", "touchend": "onTouchEnd($event)", "touchmove": "onTouchMove($event)", "touchcancel": "onTouchCancel($event)" } }, ngImport: i0, template: `
8779
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: PromptingContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8780
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: PromptingContainer, isStandalone: false, selector: "app-sprpromptingcontainer", inputs: { projectName: "projectName", promptItem: "promptItem", showPrompt: "showPrompt", selectedItemIdx: "selectedItemIdx", itemCount: "itemCount", transportActions: "transportActions" }, host: { listeners: { "touchstart": "onTouchstart($event)", "touchend": "onTouchEnd($event)", "touchmove": "onTouchMove($event)", "touchcancel": "onTouchCancel($event)" } }, ngImport: i0, template: `
8775
8781
  <spr-recinstructions [selectedItemIdx]="selectedItemIdx" [itemCount]="itemCount"
8776
8782
  [recinstructions]="promptItem?.recinstructions?.recinstructions"></spr-recinstructions>
8777
8783
  <app-sprpromptcontainer [projectName]="projectName"
@@ -8779,7 +8785,7 @@ class PromptingContainer {
8779
8785
 
8780
8786
  `, isInline: true, styles: [":host{position:relative;flex:3;padding:10pt;justify-content:center;align-items:center;background:#fff;text-align:center;display:flex;flex-direction:column;min-height:0px}\n"], dependencies: [{ kind: "component", type: Recinstructions, selector: "spr-recinstructions", inputs: ["recinstructions", "selectedItemIdx", "itemCount"] }, { kind: "component", type: PromptContainer, selector: "app-sprpromptcontainer", inputs: ["projectName", "mediaitems"] }] }); }
8781
8787
  }
8782
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PromptingContainer, decorators: [{
8788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: PromptingContainer, decorators: [{
8783
8789
  type: Component,
8784
8790
  args: [{ selector: 'app-sprpromptingcontainer', template: `
8785
8791
  <spr-recinstructions [selectedItemIdx]="selectedItemIdx" [itemCount]="itemCount"
@@ -8836,56 +8842,60 @@ class Prompting extends ResponsiveComponent {
8836
8842
  prevItem() {
8837
8843
  this.onPrevItem.emit();
8838
8844
  }
8839
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Prompting, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
8840
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: Prompting, isStandalone: false, selector: "app-sprprompting", inputs: { projectName: "projectName", startStopSignalState: "startStopSignalState", promptItem: "promptItem", showPrompt: "showPrompt", items: "items", selectedItemIdx: "selectedItemIdx", transportActions: "transportActions", enableDownload: "enableDownload", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { onItemSelect: "onItemSelect", onNextItem: "onNextItem", onPrevItem: "onPrevItem" }, viewQueries: [{ propertyName: "simpleTrafficLight", first: true, predicate: SimpleTrafficLight, descendants: true, static: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
8845
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Prompting, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
8846
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: Prompting, isStandalone: false, selector: "app-sprprompting", inputs: { projectName: "projectName", startStopSignalState: "startStopSignalState", promptItem: "promptItem", showPrompt: "showPrompt", items: "items", selectedItemIdx: "selectedItemIdx", transportActions: "transportActions", enableDownload: "enableDownload", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { onItemSelect: "onItemSelect", onNextItem: "onNextItem", onPrevItem: "onPrevItem" }, viewQueries: [{ propertyName: "simpleTrafficLight", first: true, predicate: SimpleTrafficLight, descendants: true, static: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
8841
8847
 
8842
- <app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
8843
- <app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
8844
- [itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
8845
- [transportActions]="transportActions"></app-sprpromptingcontainer>
8846
- <app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
8847
- (onRowSelect)="itemSelect($event)"></app-sprprogress>
8848
- <div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
8848
+ <app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
8849
+ <app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
8850
+ [itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
8851
+ [transportActions]="transportActions"></app-sprpromptingcontainer>
8852
+ @if (!screenXs) {
8853
+ <app-sprprogress [items]="items" [selectedItemIdx]="selectedItemIdx"
8854
+ (onRowSelect)="itemSelect($event)"></app-sprprogress>
8855
+ }
8856
+ <div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
8849
8857
 
8850
- <app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
8851
- [audioClip]="displayAudioClip"
8852
- [playStartAction]="playStartAction"
8853
- [playSelectionAction]="playSelectionAction"
8854
- [autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
8855
- [playStopAction]="playStopAction"></app-audiodisplay>
8858
+ <app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
8859
+ [audioClip]="displayAudioClip"
8860
+ [playStartAction]="playStartAction"
8861
+ [playSelectionAction]="playSelectionAction"
8862
+ [autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
8863
+ [playStopAction]="playStopAction"></app-audiodisplay>
8856
8864
 
8857
8865
 
8858
- </div>
8866
+ </div>
8859
8867
 
8860
8868
 
8861
8869
 
8862
- `, isInline: true, styles: [":host{position:relative;margin:0;padding:0;background:#d3d3d3;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: Progress, selector: "app-sprprogress", inputs: ["items", "selectedItemIdx", "enableDownload"], outputs: ["onRowSelect", "rowSelect", "onShowDoneAction", "clickDone", "onDownloadDoneAction", "clickDownloadDone"] }, { kind: "component", type: SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: ["status"] }, { kind: "component", type: PromptingContainer, selector: "app-sprpromptingcontainer", inputs: ["projectName", "promptItem", "showPrompt", "selectedItemIdx", "itemCount", "transportActions"] }] }); }
8870
+ `, isInline: true, styles: [":host{position:relative;margin:0;padding:0;background:#d3d3d3;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "component", type: AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: Progress, selector: "app-sprprogress", inputs: ["items", "selectedItemIdx", "enableDownload"], outputs: ["onRowSelect", "rowSelect", "onShowDoneAction", "clickDone", "onDownloadDoneAction", "clickDownloadDone"] }, { kind: "component", type: SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: ["status"] }, { kind: "component", type: PromptingContainer, selector: "app-sprpromptingcontainer", inputs: ["projectName", "promptItem", "showPrompt", "selectedItemIdx", "itemCount", "transportActions"] }] }); }
8863
8871
  }
8864
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: Prompting, decorators: [{
8872
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: Prompting, decorators: [{
8865
8873
  type: Component,
8866
8874
  args: [{ selector: 'app-sprprompting', template: `
8867
8875
 
8868
- <app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
8869
- <app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
8870
- [itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
8871
- [transportActions]="transportActions"></app-sprpromptingcontainer>
8872
- <app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
8873
- (onRowSelect)="itemSelect($event)"></app-sprprogress>
8874
- <div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
8876
+ <app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
8877
+ <app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
8878
+ [itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
8879
+ [transportActions]="transportActions"></app-sprpromptingcontainer>
8880
+ @if (!screenXs) {
8881
+ <app-sprprogress [items]="items" [selectedItemIdx]="selectedItemIdx"
8882
+ (onRowSelect)="itemSelect($event)"></app-sprprogress>
8883
+ }
8884
+ <div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
8875
8885
 
8876
- <app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
8877
- [audioClip]="displayAudioClip"
8878
- [playStartAction]="playStartAction"
8879
- [playSelectionAction]="playSelectionAction"
8880
- [autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
8881
- [playStopAction]="playStopAction"></app-audiodisplay>
8886
+ <app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
8887
+ [audioClip]="displayAudioClip"
8888
+ [playStartAction]="playStartAction"
8889
+ [playSelectionAction]="playSelectionAction"
8890
+ [autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
8891
+ [playStopAction]="playStopAction"></app-audiodisplay>
8882
8892
 
8883
8893
 
8884
- </div>
8894
+ </div>
8885
8895
 
8886
8896
 
8887
8897
 
8888
- `, standalone: false, styles: [":host{position:relative;margin:0;padding:0;background:#d3d3d3;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"] }]
8898
+ `, standalone: false, styles: [":host{position:relative;margin:0;padding:0;background:#d3d3d3;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"] }]
8889
8899
  }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }], propDecorators: { simpleTrafficLight: [{
8890
8900
  type: ViewChild,
8891
8901
  args: [SimpleTrafficLight, { static: true }]
@@ -8936,8 +8946,8 @@ class SessionFinishedDialog {
8936
8946
  closeDialog() {
8937
8947
  this.dialogRef.close();
8938
8948
  }
8939
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SessionFinishedDialog, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
8940
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: SessionFinishedDialog, isStandalone: false, selector: "spr-session-finished-dialog", ngImport: i0, template: `<h1 mat-dialog-title><mat-icon [style.color]="'green'">done_all</mat-icon> Session finished</h1>
8949
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SessionFinishedDialog, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
8950
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: SessionFinishedDialog, isStandalone: false, selector: "spr-session-finished-dialog", ngImport: i0, template: `<h1 mat-dialog-title><mat-icon [style.color]="'green'">done_all</mat-icon> Session finished</h1>
8941
8951
  <div mat-dialog-content>
8942
8952
 
8943
8953
  <p>Thank you! The recording session is complete.</p>
@@ -8946,9 +8956,9 @@ class SessionFinishedDialog {
8946
8956
  <div mat-dialog-actions>
8947
8957
  <button mat-button (click)="closeDialog()">OK</button>
8948
8958
  </div>
8949
- `, isInline: true, dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
8959
+ `, isInline: true, dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
8950
8960
  }
8951
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SessionFinishedDialog, decorators: [{
8961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SessionFinishedDialog, decorators: [{
8952
8962
  type: Component,
8953
8963
  args: [{
8954
8964
  selector: 'spr-session-finished-dialog',
@@ -8977,36 +8987,44 @@ class MessageDialog {
8977
8987
  closeDialog() {
8978
8988
  this.dialogRef.close();
8979
8989
  }
8980
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MessageDialog, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
8981
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: MessageDialog, isStandalone: false, selector: "msg-dialog", ngImport: i0, template: `<h1 mat-dialog-title><mat-icon *ngIf="data.type==='error'" [style.color]="'red'">error</mat-icon>
8982
- <mat-icon *ngIf="data.type==='warning'" [style.color]="'yellow'">warning</mat-icon>{{data.title}}</h1>
8983
- <div mat-dialog-content>
8990
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: MessageDialog, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
8991
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: MessageDialog, isStandalone: false, selector: "msg-dialog", ngImport: i0, template: `<h1 mat-dialog-title>@if (data.type==='error') {
8992
+ <mat-icon [style.color]="'red'">error</mat-icon>
8993
+ }
8994
+ @if (data.type==='warning') {
8995
+ <mat-icon [style.color]="'yellow'">warning</mat-icon>
8996
+ }{{data.title}}</h1>
8997
+ <div mat-dialog-content>
8984
8998
 
8985
- <p>{{data.msg}}</p>
8986
- <p>{{data.advice}}</p>
8999
+ <p>{{data.msg}}</p>
9000
+ <p>{{data.advice}}</p>
8987
9001
 
8988
- </div>
8989
- <div mat-dialog-actions>
8990
- <button mat-button (click)="closeDialog()">OK</button>
8991
- </div>
8992
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
9002
+ </div>
9003
+ <div mat-dialog-actions>
9004
+ <button mat-button (click)="closeDialog()">OK</button>
9005
+ </div>
9006
+ `, isInline: true, dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
8993
9007
  }
8994
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MessageDialog, decorators: [{
9008
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: MessageDialog, decorators: [{
8995
9009
  type: Component,
8996
9010
  args: [{
8997
9011
  selector: 'msg-dialog',
8998
- template: `<h1 mat-dialog-title><mat-icon *ngIf="data.type==='error'" [style.color]="'red'">error</mat-icon>
8999
- <mat-icon *ngIf="data.type==='warning'" [style.color]="'yellow'">warning</mat-icon>{{data.title}}</h1>
9000
- <div mat-dialog-content>
9012
+ template: `<h1 mat-dialog-title>@if (data.type==='error') {
9013
+ <mat-icon [style.color]="'red'">error</mat-icon>
9014
+ }
9015
+ @if (data.type==='warning') {
9016
+ <mat-icon [style.color]="'yellow'">warning</mat-icon>
9017
+ }{{data.title}}</h1>
9018
+ <div mat-dialog-content>
9001
9019
 
9002
- <p>{{data.msg}}</p>
9003
- <p>{{data.advice}}</p>
9020
+ <p>{{data.msg}}</p>
9021
+ <p>{{data.advice}}</p>
9004
9022
 
9005
- </div>
9006
- <div mat-dialog-actions>
9007
- <button mat-button (click)="closeDialog()">OK</button>
9008
- </div>
9009
- `,
9023
+ </div>
9024
+ <div mat-dialog-actions>
9025
+ <button mat-button (click)="closeDialog()">OK</button>
9026
+ </div>
9027
+ `,
9010
9028
  standalone: false
9011
9029
  }]
9012
9030
  }], ctorParameters: () => [{ type: i1$3.MatDialogRef }, { type: undefined, decorators: [{
@@ -10467,10 +10485,10 @@ class RecordingService extends BasicRecordingService {
10467
10485
  });
10468
10486
  return wobs;
10469
10487
  }
10470
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
10471
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingService }); }
10488
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
10489
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingService }); }
10472
10490
  }
10473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingService, decorators: [{
10491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingService, decorators: [{
10474
10492
  type: Injectable
10475
10493
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
10476
10494
  type: Inject,
@@ -10827,15 +10845,15 @@ class LevelBar {
10827
10845
  }
10828
10846
  }
10829
10847
  }
10830
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LevelBar, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
10831
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: LevelBar, isStandalone: false, selector: "audio-levelbar", inputs: { streamingMode: "streamingMode", displayLevelInfos: "displayLevelInfos", state: "state" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "virtualCanvasRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "liveLevelCanvasRef", first: true, predicate: ["levelbar"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["markerCanvas"], descendants: true, static: true }], ngImport: i0, template: `
10848
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: LevelBar, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
10849
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: LevelBar, isStandalone: false, selector: "audio-levelbar", inputs: { streamingMode: "streamingMode", displayLevelInfos: "displayLevelInfos", state: "state" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "virtualCanvasRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "liveLevelCanvasRef", first: true, predicate: ["levelbar"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["markerCanvas"], descendants: true, static: true }], ngImport: i0, template: `
10832
10850
  <div #virtualCanvas>
10833
10851
  <canvas #levelbar></canvas>
10834
10852
  <canvas #markerCanvas></canvas>
10835
10853
  </div>
10836
10854
  `, isInline: true, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "div{top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n", "canvas{top:0;left:0;width:100%;height:100%;position:absolute}\n"] }); }
10837
10855
  }
10838
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LevelBar, decorators: [{
10856
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: LevelBar, decorators: [{
10839
10857
  type: Component,
10840
10858
  args: [{ selector: 'audio-levelbar', template: `
10841
10859
  <div #virtualCanvas>
@@ -10872,22 +10890,30 @@ class StatusDisplay {
10872
10890
  this.statusMsg = 'Initialize...';
10873
10891
  this.statusWaiting = false;
10874
10892
  }
10875
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: StatusDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10876
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: StatusDisplay, isStandalone: false, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0, template: `
10893
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: StatusDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10894
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: StatusDisplay, isStandalone: false, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0, template: `
10877
10895
  <p matTooltip="Status">
10878
- <mat-progress-spinner *ngIf="statusWaiting" color="black" mode="indeterminate" [diameter]="30" [strokeWidth]="5"></mat-progress-spinner><mat-icon *ngIf="statusAlertType==='error'" style="color:red">report_problem</mat-icon>
10896
+ @if (statusWaiting) {
10897
+ <mat-progress-spinner color="black" mode="indeterminate" [diameter]="30" [strokeWidth]="5"></mat-progress-spinner>
10898
+ }@if (statusAlertType==='error') {
10899
+ <mat-icon style="color:red">report_problem</mat-icon>
10900
+ }
10879
10901
  {{statusMsg}}
10880
10902
  </p>
10881
- `, isInline: true, styles: [":host{display:inline;text-align:left;font-size:smaller}\n", "p{padding:4px;white-space:nowrap;display:inline-block}\n", "mat-progress-spinner{color:#000;display:inline-block}\n", "span{color:red}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
10903
+ `, isInline: true, styles: [":host{display:inline;text-align:left;font-size:smaller}\n", "p{padding:4px;white-space:nowrap;display:inline-block}\n", "mat-progress-spinner{color:#000;display:inline-block}\n", "span{color:red}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
10882
10904
  }
10883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: StatusDisplay, decorators: [{
10905
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: StatusDisplay, decorators: [{
10884
10906
  type: Component,
10885
10907
  args: [{ selector: 'app-sprstatusdisplay', template: `
10886
10908
  <p matTooltip="Status">
10887
- <mat-progress-spinner *ngIf="statusWaiting" color="black" mode="indeterminate" [diameter]="30" [strokeWidth]="5"></mat-progress-spinner><mat-icon *ngIf="statusAlertType==='error'" style="color:red">report_problem</mat-icon>
10909
+ @if (statusWaiting) {
10910
+ <mat-progress-spinner color="black" mode="indeterminate" [diameter]="30" [strokeWidth]="5"></mat-progress-spinner>
10911
+ }@if (statusAlertType==='error') {
10912
+ <mat-icon style="color:red">report_problem</mat-icon>
10913
+ }
10888
10914
  {{statusMsg}}
10889
10915
  </p>
10890
- `, standalone: false, styles: [":host{display:inline;text-align:left;font-size:smaller}\n", "p{padding:4px;white-space:nowrap;display:inline-block}\n", "mat-progress-spinner{color:#000;display:inline-block}\n", "span{color:red}\n"] }]
10916
+ `, standalone: false, styles: [":host{display:inline;text-align:left;font-size:smaller}\n", "p{padding:4px;white-space:nowrap;display:inline-block}\n", "mat-progress-spinner{color:#000;display:inline-block}\n", "span{color:red}\n"] }]
10891
10917
  }], propDecorators: { statusAlertType: [{
10892
10918
  type: Input
10893
10919
  }], statusMsg: [{
@@ -10951,13 +10977,13 @@ class UploadStatus {
10951
10977
  get status() {
10952
10978
  return this._status;
10953
10979
  }
10954
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: UploadStatus, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10955
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: UploadStatus, isStandalone: false, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0, template: `
10980
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: UploadStatus, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10981
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: UploadStatus, isStandalone: false, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0, template: `
10956
10982
  <mat-progress-spinner [mode]="spinnerMode" [color]="colorStatus" [diameter]="30" [strokeWidth]="5" [value]="_value"
10957
10983
  [matTooltip]="toolTipText"></mat-progress-spinner>
10958
- `, isInline: true, styles: [":host{text-align:left}\n", "mat-progress-spinner{display:inline-block}\n"], dependencies: [{ kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
10984
+ `, isInline: true, styles: [":host{text-align:left}\n", "mat-progress-spinner{display:inline-block}\n"], dependencies: [{ kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
10959
10985
  }
10960
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: UploadStatus, decorators: [{
10986
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: UploadStatus, decorators: [{
10961
10987
  type: Component,
10962
10988
  args: [{ selector: 'app-uploadstatus', template: `
10963
10989
  <mat-progress-spinner [mode]="spinnerMode" [color]="colorStatus" [diameter]="30" [strokeWidth]="5" [value]="_value"
@@ -10974,12 +11000,12 @@ class ProgressDisplay {
10974
11000
  constructor() {
10975
11001
  this.progressMsg = '[itemcode]';
10976
11002
  }
10977
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ProgressDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10978
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: ProgressDisplay, isStandalone: false, selector: "app-sprprogressdisplay", ngImport: i0, template: `
11003
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ProgressDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11004
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: ProgressDisplay, isStandalone: false, selector: "app-sprprogressdisplay", ngImport: i0, template: `
10979
11005
  <p>{{progressMsg}}</p>
10980
11006
  `, isInline: true, styles: [":host{flex:1;width:100%;text-align:left}\n"] }); }
10981
11007
  }
10982
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ProgressDisplay, decorators: [{
11008
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ProgressDisplay, decorators: [{
10983
11009
  type: Component,
10984
11010
  args: [{ selector: 'app-sprprogressdisplay', template: `
10985
11011
  <p>{{progressMsg}}</p>
@@ -11076,52 +11102,80 @@ class TransportPanel extends ResponsiveComponent {
11076
11102
  this.actions.stopNonrecordingAction.perform();
11077
11103
  }
11078
11104
  }
11079
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: TransportPanel, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
11080
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: TransportPanel, isStandalone: false, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, usesInheritance: true, ngImport: i0, template: `
11081
- <button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
11082
- mat-raised-button class="transport-button-icon">
11083
- <span><mat-icon>chevron_left</mat-icon></span>
11084
- </button>
11105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TransportPanel, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
11106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: TransportPanel, isStandalone: false, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, usesInheritance: true, ngImport: i0, template: `
11107
+ @if (navigationEnabled) {
11108
+ <button id="bwdBtn" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
11109
+ mat-raised-button class="transport-button-icon">
11110
+ <span><mat-icon>chevron_left</mat-icon></span>
11111
+ </button>
11112
+ }
11085
11113
  <button (click)="startStopNextPerform()" [disabled]="startDisabled() && stopDisabled() && nextDisabled() && stopNonrecordingDisabled()" mat-raised-button class="transport-button-icon">
11086
- <span><mat-icon class="transport-button-icon" [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon><mat-icon class="transport-button-icon" *ngIf="!nextDisabled() || !stopNonrecordingDisabled()" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon></span>
11087
- <span *ngIf="!screenXs" class="transport-button-text">{{startStopNextName()}}</span>
11114
+ <span><mat-icon class="transport-button-icon" [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon>@if (!nextDisabled() || !stopNonrecordingDisabled()) {
11115
+ <mat-icon class="transport-button-icon" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon>
11116
+ }</span>
11117
+ @if (!screenXs) {
11118
+ <span class="transport-button-text">{{startStopNextName()}}</span>
11119
+ }
11088
11120
  </button>
11089
- <button *ngIf="pausingEnabled" (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button class="transport-button-icon">
11090
- <span><mat-icon class="transport-button-icon">pause</mat-icon></span>
11091
- <span *ngIf="!screenXs" class="transport-button-text">Pause</span>
11092
- </button>
11093
- <button id="fwdNextBtn" *ngIf="navigationEnabled && !screenXs" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button class="transport-button-icon">
11094
- <span><mat-icon>redo</mat-icon></span>
11095
- </button>
11096
- <button id="fwdBtn" *ngIf="navigationEnabled" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button class="transport-button-icon">
11097
- <span><mat-icon>chevron_right</mat-icon></span>
11098
- </button>
11099
-
11100
- `, isInline: true, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n", ".transport-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ".transport-button-text{font-size:14px;letter-spacing:normal;vertical-align:baseline}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
11121
+ @if (pausingEnabled) {
11122
+ <button (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button class="transport-button-icon">
11123
+ <span><mat-icon class="transport-button-icon">pause</mat-icon></span>
11124
+ @if (!screenXs) {
11125
+ <span class="transport-button-text">Pause</span>
11126
+ }
11127
+ </button>
11128
+ }
11129
+ @if (navigationEnabled && !screenXs) {
11130
+ <button id="fwdNextBtn" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button class="transport-button-icon">
11131
+ <span><mat-icon>redo</mat-icon></span>
11132
+ </button>
11133
+ }
11134
+ @if (navigationEnabled) {
11135
+ <button id="fwdBtn" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button class="transport-button-icon">
11136
+ <span><mat-icon>chevron_right</mat-icon></span>
11137
+ </button>
11138
+ }
11139
+
11140
+ `, isInline: true, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n", ".transport-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ".transport-button-text{font-size:14px;letter-spacing:normal;vertical-align:baseline}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
11101
11141
  }
11102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: TransportPanel, decorators: [{
11142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TransportPanel, decorators: [{
11103
11143
  type: Component,
11104
11144
  args: [{ selector: 'app-sprtransport', template: `
11105
- <button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
11106
- mat-raised-button class="transport-button-icon">
11107
- <span><mat-icon>chevron_left</mat-icon></span>
11108
- </button>
11145
+ @if (navigationEnabled) {
11146
+ <button id="bwdBtn" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
11147
+ mat-raised-button class="transport-button-icon">
11148
+ <span><mat-icon>chevron_left</mat-icon></span>
11149
+ </button>
11150
+ }
11109
11151
  <button (click)="startStopNextPerform()" [disabled]="startDisabled() && stopDisabled() && nextDisabled() && stopNonrecordingDisabled()" mat-raised-button class="transport-button-icon">
11110
- <span><mat-icon class="transport-button-icon" [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon><mat-icon class="transport-button-icon" *ngIf="!nextDisabled() || !stopNonrecordingDisabled()" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon></span>
11111
- <span *ngIf="!screenXs" class="transport-button-text">{{startStopNextName()}}</span>
11112
- </button>
11113
- <button *ngIf="pausingEnabled" (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button class="transport-button-icon">
11114
- <span><mat-icon class="transport-button-icon">pause</mat-icon></span>
11115
- <span *ngIf="!screenXs" class="transport-button-text">Pause</span>
11152
+ <span><mat-icon class="transport-button-icon" [style.color]="startStopNextIconColor()">{{startStopNextIconName()}}</mat-icon>@if (!nextDisabled() || !stopNonrecordingDisabled()) {
11153
+ <mat-icon class="transport-button-icon" [style.color]="nextDisabled() ? 'grey' : 'black'">chevron_right</mat-icon>
11154
+ }</span>
11155
+ @if (!screenXs) {
11156
+ <span class="transport-button-text">{{startStopNextName()}}</span>
11157
+ }
11116
11158
  </button>
11117
- <button id="fwdNextBtn" *ngIf="navigationEnabled && !screenXs" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button class="transport-button-icon">
11118
- <span><mat-icon>redo</mat-icon></span>
11119
- </button>
11120
- <button id="fwdBtn" *ngIf="navigationEnabled" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button class="transport-button-icon">
11121
- <span><mat-icon>chevron_right</mat-icon></span>
11122
- </button>
11123
-
11124
- `, standalone: false, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n", ".transport-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ".transport-button-text{font-size:14px;letter-spacing:normal;vertical-align:baseline}\n"] }]
11159
+ @if (pausingEnabled) {
11160
+ <button (click)="actions.pauseAction.perform()" [disabled]="pauseDisabled()" mat-raised-button class="transport-button-icon">
11161
+ <span><mat-icon class="transport-button-icon">pause</mat-icon></span>
11162
+ @if (!screenXs) {
11163
+ <span class="transport-button-text">Pause</span>
11164
+ }
11165
+ </button>
11166
+ }
11167
+ @if (navigationEnabled && !screenXs) {
11168
+ <button id="fwdNextBtn" (click)="actions.fwdNextAction.perform()" [disabled]="fwdNextDisabled()" mat-raised-button class="transport-button-icon">
11169
+ <span><mat-icon>redo</mat-icon></span>
11170
+ </button>
11171
+ }
11172
+ @if (navigationEnabled) {
11173
+ <button id="fwdBtn" (click)="actions.fwdAction.perform()" [disabled]="fwdDisabled()" mat-raised-button class="transport-button-icon">
11174
+ <span><mat-icon>chevron_right</mat-icon></span>
11175
+ </button>
11176
+ }
11177
+
11178
+ `, standalone: false, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n", ".transport-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ".transport-button-text{font-size:14px;letter-spacing:normal;vertical-align:baseline}\n"] }]
11125
11179
  }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }], propDecorators: { readonly: [{
11126
11180
  type: Input
11127
11181
  }], actions: [{
@@ -11138,16 +11192,20 @@ class WakeLockIndicator {
11138
11192
  set screenLocked(screenLock) {
11139
11193
  this._screenLocked = screenLock;
11140
11194
  }
11141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: WakeLockIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: WakeLockIndicator, isStandalone: false, selector: "app-wakelockindicator", inputs: { screenLocked: "screenLocked" }, ngImport: i0, template: `
11143
- <mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
11144
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
11195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: WakeLockIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: WakeLockIndicator, isStandalone: false, selector: "app-wakelockindicator", inputs: { screenLocked: "screenLocked" }, ngImport: i0, template: `
11197
+ @if (_screenLocked) {
11198
+ <mat-icon>screen_lock_portrait</mat-icon>
11199
+ }
11200
+ `, isInline: true, dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
11145
11201
  }
11146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: WakeLockIndicator, decorators: [{
11202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: WakeLockIndicator, decorators: [{
11147
11203
  type: Component,
11148
11204
  args: [{ selector: 'app-wakelockindicator', template: `
11149
- <mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
11150
- `, standalone: false }]
11205
+ @if (_screenLocked) {
11206
+ <mat-icon>screen_lock_portrait</mat-icon>
11207
+ }
11208
+ `, standalone: false }]
11151
11209
  }], ctorParameters: () => [], propDecorators: { screenLocked: [{
11152
11210
  type: Input
11153
11211
  }] } });
@@ -11165,12 +11223,12 @@ class ReadyStateIndicator {
11165
11223
  get ready() {
11166
11224
  return this._ready;
11167
11225
  }
11168
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ReadyStateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11169
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: ReadyStateIndicator, isStandalone: false, selector: "app-readystateindicator", inputs: { ready: "ready" }, ngImport: i0, template: `
11226
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ReadyStateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11227
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: ReadyStateIndicator, isStandalone: false, selector: "app-readystateindicator", inputs: { ready: "ready" }, ngImport: i0, template: `
11170
11228
  <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
11171
- `, isInline: true, dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
11229
+ `, isInline: true, dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
11172
11230
  }
11173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ReadyStateIndicator, decorators: [{
11231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ReadyStateIndicator, decorators: [{
11174
11232
  type: Component,
11175
11233
  args: [{ selector: 'app-readystateindicator', template: `
11176
11234
  <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
@@ -11193,52 +11251,66 @@ class ControlPanel extends ResponsiveComponent {
11193
11251
  get ready() {
11194
11252
  return this._ready;
11195
11253
  }
11196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ControlPanel, deps: [{ token: i1$2.BreakpointObserver }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
11197
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: ControlPanel, isStandalone: false, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
11198
- <div *ngIf="!screenXs" style="flex-direction: row" >
11199
- <app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11200
- class="hidden-xs"></app-sprstatusdisplay>
11201
- <app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11202
- <app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
11203
- [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11204
- <app-readystateindicator [ready]="_ready"></app-readystateindicator>
11205
- </div>
11206
- <div *ngIf="screenXs" style="flex-direction: column">
11207
- <div style="flex-direction: row" class="flexFill" >
11208
- <app-sprstatusdisplay style="flex:10 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11209
- class="hidden-xs"></app-sprstatusdisplay>
11210
- <app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
11211
- [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ControlPanel, deps: [{ token: i1$2.BreakpointObserver }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
11255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: ControlPanel, isStandalone: false, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
11256
+ @if (!screenXs) {
11257
+ <div style="flex-direction: row" >
11258
+ <app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11259
+ class="hidden-xs"></app-sprstatusdisplay>
11260
+ <app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11261
+ @if (enableUploadRecordings) {
11262
+ <app-uploadstatus style="flex:0 0 0" [value]="uploadProgress"
11263
+ [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11264
+ }
11212
11265
  <app-readystateindicator [ready]="_ready"></app-readystateindicator>
11213
11266
  </div>
11214
- <app-sprtransport [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11215
-
11216
- </div>
11217
- `, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }] }); }
11267
+ }
11268
+ @if (screenXs) {
11269
+ <div style="flex-direction: column">
11270
+ <div style="flex-direction: row" class="flexFill" >
11271
+ <app-sprstatusdisplay style="flex:10 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11272
+ class="hidden-xs"></app-sprstatusdisplay>
11273
+ @if (enableUploadRecordings) {
11274
+ <app-uploadstatus style="flex:0 0 0" [value]="uploadProgress"
11275
+ [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11276
+ }
11277
+ <app-readystateindicator [ready]="_ready"></app-readystateindicator>
11278
+ </div>
11279
+ <app-sprtransport [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11280
+ </div>
11281
+ }
11282
+ `, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"], dependencies: [{ kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }] }); }
11218
11283
  }
11219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ControlPanel, decorators: [{
11284
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ControlPanel, decorators: [{
11220
11285
  type: Component,
11221
11286
  args: [{ selector: 'app-sprcontrolpanel', template: `
11222
- <div *ngIf="!screenXs" style="flex-direction: row" >
11223
- <app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11224
- class="hidden-xs"></app-sprstatusdisplay>
11225
- <app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11226
- <app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
11227
- [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11228
- <app-readystateindicator [ready]="_ready"></app-readystateindicator>
11229
- </div>
11230
- <div *ngIf="screenXs" style="flex-direction: column">
11231
- <div style="flex-direction: row" class="flexFill" >
11232
- <app-sprstatusdisplay style="flex:10 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11233
- class="hidden-xs"></app-sprstatusdisplay>
11234
- <app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
11235
- [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11287
+ @if (!screenXs) {
11288
+ <div style="flex-direction: row" >
11289
+ <app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11290
+ class="hidden-xs"></app-sprstatusdisplay>
11291
+ <app-sprtransport style="flex:10 0 0" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11292
+ @if (enableUploadRecordings) {
11293
+ <app-uploadstatus style="flex:0 0 0" [value]="uploadProgress"
11294
+ [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11295
+ }
11236
11296
  <app-readystateindicator [ready]="_ready"></app-readystateindicator>
11237
11297
  </div>
11238
- <app-sprtransport [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11239
-
11240
- </div>
11241
- `, standalone: false, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"] }]
11298
+ }
11299
+ @if (screenXs) {
11300
+ <div style="flex-direction: column">
11301
+ <div style="flex-direction: row" class="flexFill" >
11302
+ <app-sprstatusdisplay style="flex:10 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
11303
+ class="hidden-xs"></app-sprstatusdisplay>
11304
+ @if (enableUploadRecordings) {
11305
+ <app-uploadstatus style="flex:0 0 0" [value]="uploadProgress"
11306
+ [status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
11307
+ }
11308
+ <app-readystateindicator [ready]="_ready"></app-readystateindicator>
11309
+ </div>
11310
+ <app-sprtransport [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
11311
+ </div>
11312
+ }
11313
+ `, standalone: false, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"] }]
11242
11314
  }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }, { type: i1$3.MatDialog }], propDecorators: { statusDisplay: [{
11243
11315
  type: ViewChild,
11244
11316
  args: [StatusDisplay, { static: true }]
@@ -11890,56 +11962,68 @@ class RecordingItemControls extends ResponsiveComponent {
11890
11962
  error() {
11891
11963
  // this.status = 'ERROR';
11892
11964
  }
11893
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingItemControls, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
11894
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecordingItemControls, isStandalone: false, selector: "spr-recordingitemcontrols", inputs: { audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", peakDbLvl: "peakDbLvl", agc: "agc", disableAudioDetails: "disableAudioDetails", audioLoaded: "audioLoaded", playStartAction: "playStartAction", playStopAction: "playStopAction", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, usesInheritance: true, ngImport: i0, template: `
11965
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingItemControls, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
11966
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: RecordingItemControls, isStandalone: false, selector: "spr-recordingitemcontrols", inputs: { audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", peakDbLvl: "peakDbLvl", agc: "agc", disableAudioDetails: "disableAudioDetails", audioLoaded: "audioLoaded", playStartAction: "playStartAction", playStopAction: "playStopAction", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, usesInheritance: true, ngImport: i0, template: `
11895
11967
  <button matTooltip="Start playback" (click)="playStartAction?.perform()"
11896
- [disabled]="playStartAction?playStartAction.disabled:true"
11897
- [style.color]="playStartAction?.disabled ? 'grey' : 'green'">
11898
- <mat-icon>play_arrow</mat-icon>
11968
+ [disabled]="playStartAction?playStartAction.disabled:true"
11969
+ [style.color]="playStartAction?.disabled ? 'grey' : 'green'">
11970
+ <mat-icon>play_arrow</mat-icon>
11899
11971
  </button>
11900
11972
  <button matTooltip="Stop playback" (click)="playStopAction?.perform()"
11901
- [disabled]="playStopAction?.disabled"
11902
- [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
11903
- <mat-icon>stop</mat-icon>
11973
+ [disabled]="playStopAction?.disabled"
11974
+ [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
11975
+ <mat-icon>stop</mat-icon>
11904
11976
  </button>
11905
- <button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
11906
- (click)="showRecordingDetails()">
11977
+ @if (!screenXs) {
11978
+ <button matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
11979
+ (click)="showRecordingDetails()">
11907
11980
  <mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
11908
- </button>
11909
- <button matTooltip="Download current recording" *ngIf="enableDownload" [disabled]="disableAudioDetails || !audioLoaded"
11910
- (click)="downloadRecording()">
11981
+ </button>
11982
+ }
11983
+ @if (enableDownload) {
11984
+ <button matTooltip="Download current recording" [disabled]="disableAudioDetails || !audioLoaded"
11985
+ (click)="downloadRecording()">
11911
11986
  <mat-icon>file_download</mat-icon>
11912
- </button>
11987
+ </button>
11988
+ }
11913
11989
  <div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
11914
- [style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
11915
- <tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
11916
- `, isInline: true, styles: [":host{flex:0;width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }] }); }
11990
+ [style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
11991
+ @if (_agc) {
11992
+ <tr><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr>
11993
+ }</table></div>
11994
+ `, isInline: true, styles: [":host{flex:0;width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }] }); }
11917
11995
  }
11918
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingItemControls, decorators: [{
11996
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingItemControls, decorators: [{
11919
11997
  type: Component,
11920
11998
  args: [{ selector: 'spr-recordingitemcontrols', template: `
11921
11999
  <button matTooltip="Start playback" (click)="playStartAction?.perform()"
11922
- [disabled]="playStartAction?playStartAction.disabled:true"
11923
- [style.color]="playStartAction?.disabled ? 'grey' : 'green'">
11924
- <mat-icon>play_arrow</mat-icon>
12000
+ [disabled]="playStartAction?playStartAction.disabled:true"
12001
+ [style.color]="playStartAction?.disabled ? 'grey' : 'green'">
12002
+ <mat-icon>play_arrow</mat-icon>
11925
12003
  </button>
11926
12004
  <button matTooltip="Stop playback" (click)="playStopAction?.perform()"
11927
- [disabled]="playStopAction?.disabled"
11928
- [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
11929
- <mat-icon>stop</mat-icon>
12005
+ [disabled]="playStopAction?.disabled"
12006
+ [style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
12007
+ <mat-icon>stop</mat-icon>
11930
12008
  </button>
11931
- <button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
11932
- (click)="showRecordingDetails()">
12009
+ @if (!screenXs) {
12010
+ <button matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
12011
+ (click)="showRecordingDetails()">
11933
12012
  <mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
11934
- </button>
11935
- <button matTooltip="Download current recording" *ngIf="enableDownload" [disabled]="disableAudioDetails || !audioLoaded"
11936
- (click)="downloadRecording()">
12013
+ </button>
12014
+ }
12015
+ @if (enableDownload) {
12016
+ <button matTooltip="Download current recording" [disabled]="disableAudioDetails || !audioLoaded"
12017
+ (click)="downloadRecording()">
11937
12018
  <mat-icon>file_download</mat-icon>
11938
- </button>
12019
+ </button>
12020
+ }
11939
12021
  <div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
11940
- [style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
11941
- <tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
11942
- `, standalone: false, styles: [":host{flex:0;width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"] }]
12022
+ [style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
12023
+ @if (_agc) {
12024
+ <tr><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr>
12025
+ }</table></div>
12026
+ `, standalone: false, styles: [":host{flex:0;width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"] }]
11943
12027
  }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { audioSignalCollapsed: [{
11944
12028
  type: Input
11945
12029
  }], enableDownload: [{
@@ -12036,15 +12120,15 @@ class RecordingItemDisplay extends ResponsiveComponent {
12036
12120
  this.peakDbLvl = MIN_DB_LEVEL;
12037
12121
  this.changeDetectorRef.detectChanges();
12038
12122
  }
12039
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
12040
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecordingItemDisplay, isStandalone: false, selector: "spr-recordingitemdisplay", inputs: { streamingMode: "streamingMode", audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", agc: "agc", playStartAction: "playStartAction", playStopAction: "playStopAction", displayAudioBuffer: "displayAudioBuffer", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, viewQueries: [{ propertyName: "liveLevel", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
12123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
12124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: RecordingItemDisplay, isStandalone: false, selector: "spr-recordingitemdisplay", inputs: { streamingMode: "streamingMode", audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", agc: "agc", playStartAction: "playStartAction", playStopAction: "playStopAction", displayAudioBuffer: "displayAudioBuffer", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, viewQueries: [{ propertyName: "liveLevel", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
12041
12125
  <div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
12042
12126
  <audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
12043
12127
  <spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
12044
12128
  </div>
12045
12129
  `, isInline: true, styles: ["div{width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }] }); }
12046
12130
  }
12047
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingItemDisplay, decorators: [{
12131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingItemDisplay, decorators: [{
12048
12132
  type: Component,
12049
12133
  args: [{ selector: 'spr-recordingitemdisplay', template: `
12050
12134
  <div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
@@ -13105,10 +13189,10 @@ class SpeechRecorderUploader extends Uploader {
13105
13189
  this.httpClient = httpClient;
13106
13190
  this.config = config;
13107
13191
  }
13108
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechRecorderUploader, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
13109
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechRecorderUploader }); }
13192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechRecorderUploader, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
13193
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechRecorderUploader }); }
13110
13194
  }
13111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechRecorderUploader, decorators: [{
13195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechRecorderUploader, decorators: [{
13112
13196
  type: Injectable
13113
13197
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
13114
13198
  type: Inject,
@@ -13127,13 +13211,13 @@ class WarningBar {
13127
13211
  this.displayClass = 'off';
13128
13212
  }
13129
13213
  }
13130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: WarningBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: WarningBar, isStandalone: false, selector: "app-warningbar", inputs: { warningText: "warningText", show: "show" }, providers: [SessionService], ngImport: i0, template: `
13214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: WarningBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13215
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: WarningBar, isStandalone: false, selector: "app-warningbar", inputs: { warningText: "warningText", show: "show" }, providers: [SessionService], ngImport: i0, template: `
13132
13216
  <div [class]="displayClass">{{warningText}}</div>
13133
13217
 
13134
13218
  `, isInline: true, styles: [":host{flex:0 0 content;background:orange}\n", ".off{display:none}\n", ".on{padding:2px;display:inline-block;width:100%;font-weight:700;font-size:larger;text-align:center}\n"] }); }
13135
13219
  }
13136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: WarningBar, decorators: [{
13220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: WarningBar, decorators: [{
13137
13221
  type: Component,
13138
13222
  args: [{ selector: 'app-warningbar', providers: [SessionService], template: `
13139
13223
  <div [class]="displayClass">{{warningText}}</div>
@@ -14369,110 +14453,142 @@ class SessionManager extends BasicRecorder {
14369
14453
  this.changeDetectorRef.detectChanges();
14370
14454
  }
14371
14455
  }
14372
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SessionManager, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$3.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
14373
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: SessionManager, isStandalone: false, selector: "app-sprrecordingsession", inputs: { projectName: "projectName", dataSaved: "dataSaved" }, host: { listeners: { "window:keypress": "onKeyPress($event)", "window:keydown": "onKeyDown($event)" } }, providers: [SessionService], viewQueries: [{ propertyName: "prompting", first: true, predicate: Prompting, descendants: true, static: true }, { propertyName: "liveLevelDisplay", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
14456
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SessionManager, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$3.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
14457
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: SessionManager, isStandalone: false, selector: "app-sprrecordingsession", inputs: { projectName: "projectName", dataSaved: "dataSaved" }, host: { listeners: { "window:keypress": "onKeyPress($event)", "window:keydown": "onKeyDown($event)" } }, providers: [SessionService], viewQueries: [{ propertyName: "prompting", first: true, predicate: Prompting, descendants: true, static: true }, { propertyName: "liveLevelDisplay", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
14374
14458
  <app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
14375
14459
  <app-warningbar [show]="isDefaultAudioTestSession()" warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
14376
- <app-sprprompting [projectName]="projectName"
14377
- [startStopSignalState]="startStopSignalState" [promptItem]="promptItem" [showPrompt]="showPrompt"
14378
- [items]="items?.items"
14379
- [transportActions]="transportActions"
14380
- [selectedItemIdx]="promptIndex" (onItemSelect)="itemSelect($event)" (onNextItem)="nextItem()" (onPrevItem)="prevItem()"
14381
- [audioSignalCollapsed]="audioSignalCollapsed" [displayAudioClip]="displayAudioClip"
14382
- [playStartAction]="controlAudioPlayer?.startAction"
14383
- [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
14384
- [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
14385
- [playStopAction]="controlAudioPlayer?.stopAction">
14386
-
14460
+ <app-sprprompting [projectName]="projectName"
14461
+ [startStopSignalState]="startStopSignalState" [promptItem]="promptItem" [showPrompt]="showPrompt"
14462
+ [items]="items?.items"
14463
+ [transportActions]="transportActions"
14464
+ [selectedItemIdx]="promptIndex" (onItemSelect)="itemSelect($event)" (onNextItem)="nextItem()" (onPrevItem)="prevItem()"
14465
+ [audioSignalCollapsed]="audioSignalCollapsed" [displayAudioClip]="displayAudioClip"
14466
+ [playStartAction]="controlAudioPlayer?.startAction"
14467
+ [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
14468
+ [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
14469
+ [playStopAction]="controlAudioPlayer?.stopAction">
14470
+
14387
14471
  </app-sprprompting>
14388
- <mat-progress-bar [value]="progressPercentValue()" *ngIf="screenXs" ></mat-progress-bar>
14389
-
14390
-
14472
+ @if (screenXs) {
14473
+ <mat-progress-bar [value]="progressPercentValue()" ></mat-progress-bar>
14474
+ }
14475
+
14476
+
14391
14477
  <div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
14392
14478
  <audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [displayLevelInfos]="displayAudioClip?.levelInfos" [state]="liveLevelDisplayState"></audio-levelbar>
14393
14479
  <div style="display:flex;flex-direction: row">
14394
14480
  <spr-recordingitemcontrols style="display:flex;flex:10 0 1px"
14395
- [audioLoaded]="audioLoaded"
14396
- [disableAudioDetails]="disableAudioDetails"
14397
- [playStartAction]="controlAudioPlayer?.startAction"
14398
- [playStopAction]="controlAudioPlayer?.stopAction"
14399
- [peakDbLvl]="peakLevelInDb"
14400
- [agc]="this.ac?.agcStatus"
14401
- (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
14481
+ [audioLoaded]="audioLoaded"
14482
+ [disableAudioDetails]="disableAudioDetails"
14483
+ [playStartAction]="controlAudioPlayer?.startAction"
14484
+ [playStopAction]="controlAudioPlayer?.stopAction"
14485
+ [peakDbLvl]="peakLevelInDb"
14486
+ [agc]="this.ac?.agcStatus"
14487
+ (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
14402
14488
  </spr-recordingitemcontrols>
14403
-
14404
- <app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
14405
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14406
- <app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
14407
- <app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14489
+
14490
+ @if (screenXs && enableUploadRecordings) {
14491
+ <app-uploadstatus class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
14492
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14493
+ }
14494
+ @if (screenXs) {
14495
+ <app-wakelockindicator class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
14496
+ }
14497
+ @if (screenXs) {
14498
+ <app-readystateindicator class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14499
+ }
14408
14500
  </div>
14409
14501
  </div>
14410
14502
  <div #controlpanel class="controlpanel">
14411
14503
  <div style="flex:1 1 30%;justify-content: flex-start;align-items: center; align-content: center">
14412
- <app-sprstatusdisplay *ngIf="!screenXs" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
14504
+ @if (!screenXs) {
14505
+ <app-sprstatusdisplay [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
14506
+ }
14413
14507
  </div>
14414
14508
  <app-sprtransport style="display:flex;flex:10 0 30%;justify-content: center;align-items: center; align-content: center" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="!items || items.length()>1"></app-sprtransport>
14415
14509
  <div style="display:flex;flex:1 1 30%;flex-direction:row;justify-content: flex-end;align-items: center; align-content: center">
14416
- <app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" [value]="uploadProgress"
14417
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14418
- <app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
14419
- <app-readystateindicator *ngIf="!screenXs" class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14510
+ @if (!screenXs && enableUploadRecordings) {
14511
+ <app-uploadstatus class="ricontrols" [value]="uploadProgress"
14512
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14513
+ }
14514
+ @if (!screenXs) {
14515
+ <app-wakelockindicator class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
14516
+ }
14517
+ @if (!screenXs) {
14518
+ <app-readystateindicator class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14519
+ }
14420
14520
  </div>
14421
14521
  </div>
14422
- `, isInline: true, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{display:flex;padding:4px;box-sizing:border-box;height:100%;flex-direction:row;justify-content:flex-end;align-items:center;align-content:center}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: Prompting, selector: "app-sprprompting", inputs: ["projectName", "startStopSignalState", "promptItem", "showPrompt", "items", "selectedItemIdx", "transportActions", "enableDownload", "audioSignalCollapsed", "displayAudioClip", "playStartAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "playStopAction"], outputs: ["onItemSelect", "onNextItem", "onPrevItem"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { kind: "component", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: ["screenLocked"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }, { kind: "component", type: WarningBar, selector: "app-warningbar", inputs: ["warningText", "show"] }] }); }
14522
+ `, isInline: true, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{display:flex;padding:4px;box-sizing:border-box;height:100%;flex-direction:row;justify-content:flex-end;align-items:center;align-content:center}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: Prompting, selector: "app-sprprompting", inputs: ["projectName", "startStopSignalState", "promptItem", "showPrompt", "items", "selectedItemIdx", "transportActions", "enableDownload", "audioSignalCollapsed", "displayAudioClip", "playStartAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "playStopAction"], outputs: ["onItemSelect", "onNextItem", "onPrevItem"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { kind: "component", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: ["screenLocked"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }, { kind: "component", type: WarningBar, selector: "app-warningbar", inputs: ["warningText", "show"] }] }); }
14423
14523
  }
14424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SessionManager, decorators: [{
14524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SessionManager, decorators: [{
14425
14525
  type: Component,
14426
14526
  args: [{ selector: 'app-sprrecordingsession', providers: [SessionService], template: `
14427
14527
  <app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
14428
14528
  <app-warningbar [show]="isDefaultAudioTestSession()" warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
14429
- <app-sprprompting [projectName]="projectName"
14430
- [startStopSignalState]="startStopSignalState" [promptItem]="promptItem" [showPrompt]="showPrompt"
14431
- [items]="items?.items"
14432
- [transportActions]="transportActions"
14433
- [selectedItemIdx]="promptIndex" (onItemSelect)="itemSelect($event)" (onNextItem)="nextItem()" (onPrevItem)="prevItem()"
14434
- [audioSignalCollapsed]="audioSignalCollapsed" [displayAudioClip]="displayAudioClip"
14435
- [playStartAction]="controlAudioPlayer?.startAction"
14436
- [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
14437
- [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
14438
- [playStopAction]="controlAudioPlayer?.stopAction">
14439
-
14529
+ <app-sprprompting [projectName]="projectName"
14530
+ [startStopSignalState]="startStopSignalState" [promptItem]="promptItem" [showPrompt]="showPrompt"
14531
+ [items]="items?.items"
14532
+ [transportActions]="transportActions"
14533
+ [selectedItemIdx]="promptIndex" (onItemSelect)="itemSelect($event)" (onNextItem)="nextItem()" (onPrevItem)="prevItem()"
14534
+ [audioSignalCollapsed]="audioSignalCollapsed" [displayAudioClip]="displayAudioClip"
14535
+ [playStartAction]="controlAudioPlayer?.startAction"
14536
+ [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
14537
+ [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
14538
+ [playStopAction]="controlAudioPlayer?.stopAction">
14539
+
14440
14540
  </app-sprprompting>
14441
- <mat-progress-bar [value]="progressPercentValue()" *ngIf="screenXs" ></mat-progress-bar>
14442
-
14443
-
14541
+ @if (screenXs) {
14542
+ <mat-progress-bar [value]="progressPercentValue()" ></mat-progress-bar>
14543
+ }
14544
+
14545
+
14444
14546
  <div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
14445
14547
  <audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [displayLevelInfos]="displayAudioClip?.levelInfos" [state]="liveLevelDisplayState"></audio-levelbar>
14446
14548
  <div style="display:flex;flex-direction: row">
14447
14549
  <spr-recordingitemcontrols style="display:flex;flex:10 0 1px"
14448
- [audioLoaded]="audioLoaded"
14449
- [disableAudioDetails]="disableAudioDetails"
14450
- [playStartAction]="controlAudioPlayer?.startAction"
14451
- [playStopAction]="controlAudioPlayer?.stopAction"
14452
- [peakDbLvl]="peakLevelInDb"
14453
- [agc]="this.ac?.agcStatus"
14454
- (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
14550
+ [audioLoaded]="audioLoaded"
14551
+ [disableAudioDetails]="disableAudioDetails"
14552
+ [playStartAction]="controlAudioPlayer?.startAction"
14553
+ [playStopAction]="controlAudioPlayer?.stopAction"
14554
+ [peakDbLvl]="peakLevelInDb"
14555
+ [agc]="this.ac?.agcStatus"
14556
+ (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
14455
14557
  </spr-recordingitemcontrols>
14456
-
14457
- <app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
14458
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14459
- <app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
14460
- <app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14558
+
14559
+ @if (screenXs && enableUploadRecordings) {
14560
+ <app-uploadstatus class="ricontrols dark" style="flex:0 0 0" [value]="uploadProgress"
14561
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14562
+ }
14563
+ @if (screenXs) {
14564
+ <app-wakelockindicator class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
14565
+ }
14566
+ @if (screenXs) {
14567
+ <app-readystateindicator class="ricontrols dark" style="flex:0 0 0" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14568
+ }
14461
14569
  </div>
14462
14570
  </div>
14463
14571
  <div #controlpanel class="controlpanel">
14464
14572
  <div style="flex:1 1 30%;justify-content: flex-start;align-items: center; align-content: center">
14465
- <app-sprstatusdisplay *ngIf="!screenXs" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
14573
+ @if (!screenXs) {
14574
+ <app-sprstatusdisplay [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"></app-sprstatusdisplay>
14575
+ }
14466
14576
  </div>
14467
14577
  <app-sprtransport style="display:flex;flex:10 0 30%;justify-content: center;align-items: center; align-content: center" [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="!items || items.length()>1"></app-sprtransport>
14468
14578
  <div style="display:flex;flex:1 1 30%;flex-direction:row;justify-content: flex-end;align-items: center; align-content: center">
14469
- <app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols" [value]="uploadProgress"
14470
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14471
- <app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
14472
- <app-readystateindicator *ngIf="!screenXs" class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14579
+ @if (!screenXs && enableUploadRecordings) {
14580
+ <app-uploadstatus class="ricontrols" [value]="uploadProgress"
14581
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
14582
+ }
14583
+ @if (!screenXs) {
14584
+ <app-wakelockindicator class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
14585
+ }
14586
+ @if (!screenXs) {
14587
+ <app-readystateindicator class="ricontrols" [ready]="dataSaved && !isActive()"></app-readystateindicator>
14588
+ }
14473
14589
  </div>
14474
14590
  </div>
14475
- `, standalone: false, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{display:flex;padding:4px;box-sizing:border-box;height:100%;flex-direction:row;justify-content:flex-end;align-items:center;align-content:center}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
14591
+ `, standalone: false, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;min-height:0px;overflow:hidden}\n", ".ricontrols{display:flex;padding:4px;box-sizing:border-box;height:100%;flex-direction:row;justify-content:flex-end;align-items:center;align-content:center}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
14476
14592
  }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$3.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
14477
14593
  type: Inject,
14478
14594
  args: [SPEECHRECORDER_CONFIG]
@@ -14604,10 +14720,10 @@ class SprDb {
14604
14720
  });
14605
14721
  return obs;
14606
14722
  }
14607
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SprDb, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14608
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SprDb }); }
14723
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SprDb, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14724
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SprDb }); }
14609
14725
  }
14610
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SprDb, decorators: [{
14726
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SprDb, decorators: [{
14611
14727
  type: Injectable
14612
14728
  }], ctorParameters: () => [] });
14613
14729
 
@@ -14704,10 +14820,10 @@ class ScriptService {
14704
14820
  }
14705
14821
  return this.http.get(scriptUrl, { withCredentials: this.withCredentials });
14706
14822
  }
14707
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ScriptService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
14708
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ScriptService }); }
14823
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ScriptService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
14824
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ScriptService }); }
14709
14825
  }
14710
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ScriptService, decorators: [{
14826
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ScriptService, decorators: [{
14711
14827
  type: Injectable
14712
14828
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
14713
14829
  type: Inject,
@@ -15073,17 +15189,17 @@ class SpeechrecorderngComponent extends RecorderComponent {
15073
15189
  this.sm.statusAlertType = 'error';
15074
15190
  this.sm.statusMsg = 'ERROR: Recording.';
15075
15191
  }
15076
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechrecorderngComponent, deps: [{ token: i4$2.ActivatedRoute }, { token: i4$2.Router }, { token: i0.ChangeDetectorRef }, { token: SessionService }, { token: ProjectService }, { token: ScriptService }, { token: RecordingService }, { token: SpeechRecorderUploader }], target: i0.ɵɵFactoryTarget.Component }); }
15077
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: SpeechrecorderngComponent, isStandalone: false, selector: "app-speechrecorder", providers: [SessionService], viewQueries: [{ propertyName: "sm", first: true, predicate: SessionManager, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
15192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechrecorderngComponent, deps: [{ token: i4.ActivatedRoute }, { token: i4.Router }, { token: i0.ChangeDetectorRef }, { token: SessionService }, { token: ProjectService }, { token: ScriptService }, { token: RecordingService }, { token: SpeechRecorderUploader }], target: i0.ɵɵFactoryTarget.Component }); }
15193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: SpeechrecorderngComponent, isStandalone: false, selector: "app-speechrecorder", providers: [SessionService], viewQueries: [{ propertyName: "sm", first: true, predicate: SessionManager, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
15078
15194
  <app-sprrecordingsession [projectName]="project?.name" [dataSaved]="dataSaved"></app-sprrecordingsession>
15079
15195
  `, isInline: true, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0}\n"], dependencies: [{ kind: "component", type: SessionManager, selector: "app-sprrecordingsession", inputs: ["projectName", "dataSaved"] }] }); }
15080
15196
  }
15081
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechrecorderngComponent, decorators: [{
15197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechrecorderngComponent, decorators: [{
15082
15198
  type: Component,
15083
15199
  args: [{ selector: 'app-speechrecorder', providers: [SessionService], template: `
15084
15200
  <app-sprrecordingsession [projectName]="project?.name" [dataSaved]="dataSaved"></app-sprrecordingsession>
15085
15201
  `, standalone: false, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0}\n"] }]
15086
- }], ctorParameters: () => [{ type: i4$2.ActivatedRoute }, { type: i4$2.Router }, { type: i0.ChangeDetectorRef }, { type: SessionService }, { type: ProjectService }, { type: ScriptService }, { type: RecordingService }, { type: SpeechRecorderUploader }], propDecorators: { sm: [{
15202
+ }], ctorParameters: () => [{ type: i4.ActivatedRoute }, { type: i4.Router }, { type: i0.ChangeDetectorRef }, { type: SessionService }, { type: ProjectService }, { type: ScriptService }, { type: RecordingService }, { type: SpeechRecorderUploader }], propDecorators: { sm: [{
15087
15203
  type: ViewChild,
15088
15204
  args: [SessionManager, { static: true }]
15089
15205
  }] } });
@@ -15097,10 +15213,10 @@ class ScrollIntoViewDirective {
15097
15213
  this.elRef.nativeElement.scrollIntoView(false);
15098
15214
  }
15099
15215
  }
15100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ScrollIntoViewDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
15101
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: ScrollIntoViewDirective, isStandalone: false, selector: "[scrollIntoViewToBottom]", inputs: { scrollIntoViewToBottom: "scrollIntoViewToBottom" }, ngImport: i0 }); }
15216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ScrollIntoViewDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
15217
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.2", type: ScrollIntoViewDirective, isStandalone: false, selector: "[scrollIntoViewToBottom]", inputs: { scrollIntoViewToBottom: "scrollIntoViewToBottom" }, ngImport: i0 }); }
15102
15218
  }
15103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ScrollIntoViewDirective, decorators: [{
15219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ScrollIntoViewDirective, decorators: [{
15104
15220
  type: Directive,
15105
15221
  args: [{
15106
15222
  selector: "[scrollIntoViewToBottom]",
@@ -15111,10 +15227,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
15111
15227
  }] } });
15112
15228
 
15113
15229
  class ScrollPaneHorizontal {
15114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ScrollPaneHorizontal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: ScrollPaneHorizontal, isStandalone: false, selector: "scroll-pane-horizontal", ngImport: i0, template: '', isInline: true, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }); }
15230
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ScrollPaneHorizontal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15231
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: ScrollPaneHorizontal, isStandalone: false, selector: "scroll-pane-horizontal", ngImport: i0, template: '', isInline: true, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }); }
15116
15232
  }
15117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ScrollPaneHorizontal, decorators: [{
15233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ScrollPaneHorizontal, decorators: [{
15118
15234
  type: Component,
15119
15235
  args: [{ selector: 'scroll-pane-horizontal', template: '', standalone: false, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }]
15120
15236
  }] });
@@ -15297,8 +15413,8 @@ class AudioDisplayPlayer {
15297
15413
  error() {
15298
15414
  this.status = 'ERROR';
15299
15415
  }
15300
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplayPlayer, deps: [{ token: i4$2.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
15301
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioDisplayPlayer, isStandalone: false, selector: "app-audiodisplayplayer", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0, template: `
15416
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplayPlayer, deps: [{ token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
15417
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: AudioDisplayPlayer, isStandalone: false, selector: "app-audiodisplayplayer", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0, template: `
15302
15418
 
15303
15419
  <audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
15304
15420
 
@@ -15313,7 +15429,7 @@ class AudioDisplayPlayer {
15313
15429
  [zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control><p>{{status}}
15314
15430
  `, isInline: true, styles: [":host{display:flex;flex-direction:column;position:absolute;bottom:0;height:100%;width:100%;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#000000bf}\n"], dependencies: [{ kind: "component", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }] }); }
15315
15431
  }
15316
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioDisplayPlayer, decorators: [{
15432
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioDisplayPlayer, decorators: [{
15317
15433
  type: Component,
15318
15434
  args: [{ selector: 'app-audiodisplayplayer', template: `
15319
15435
 
@@ -15329,7 +15445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
15329
15445
  [zoomSelectedAction]="zoomSelectedAction"
15330
15446
  [zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control><p>{{status}}
15331
15447
  `, standalone: false, styles: [":host{display:flex;flex-direction:column;position:absolute;bottom:0;height:100%;width:100%;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#000000bf}\n"] }]
15332
- }], ctorParameters: () => [{ type: i4$2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { playStartAction: [{
15448
+ }], ctorParameters: () => [{ type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { playStartAction: [{
15333
15449
  type: Input
15334
15450
  }], playStopAction: [{
15335
15451
  type: Input
@@ -15679,10 +15795,10 @@ class RecordingFileService extends BasicRecordingService {
15679
15795
  //console.log("Path request URL: "+recUrl)
15680
15796
  return this.http.patch(recUrl, { editSampleRate: editSampleRate, editStartFrame: editStartFrame, editEndFrame: editEndFrame }, { withCredentials: this.withCredentials });
15681
15797
  }
15682
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
15683
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileService }); }
15798
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
15799
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileService }); }
15684
15800
  }
15685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileService, decorators: [{
15801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileService, decorators: [{
15686
15802
  type: Injectable
15687
15803
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
15688
15804
  type: Inject,
@@ -15705,76 +15821,104 @@ class RecordingFileNaviComponent {
15705
15821
  this.selectVersion.perform(versionNr);
15706
15822
  }
15707
15823
  }
15708
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileNaviComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15709
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecordingFileNaviComponent, isStandalone: false, selector: "app-recording-file-navi", inputs: { firstAction: "firstAction", prevAction: "prevAction", nextAction: "nextAction", lastAction: "lastAction", items: "items", itemPos: "itemPos", selectVersion: "selectVersion", versions: "versions", version: "version", naviInfoLoading: "naviInfoLoading" }, ngImport: i0, template: `
15824
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileNaviComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15825
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: RecordingFileNaviComponent, isStandalone: false, selector: "app-recording-file-navi", inputs: { firstAction: "firstAction", prevAction: "prevAction", nextAction: "nextAction", lastAction: "lastAction", items: "items", itemPos: "itemPos", selectVersion: "selectVersion", versions: "versions", version: "version", naviInfoLoading: "naviInfoLoading" }, ngImport: i0, template: `
15710
15826
  <div #controlPanel style="display:flex;flex-direction: row;">
15711
15827
  <div #navi style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
15712
15828
  <fieldset>
15713
15829
  <legend>Versions</legend>
15714
- <mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15715
- <select *ngIf="!naviInfoLoading" [disabled]="versions==null || versions.length==1" (change)="selectVersionChange($event)">
15716
- <option *ngFor="let v of versions; let i = index" [selected]="v===version" value="{{v}}">{{v}}<ng-container *ngIf="i==0"> (latest)</ng-container></option>
15830
+ @if (naviInfoLoading) {
15831
+ <mat-progress-spinner mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15832
+ }
15833
+ @if (!naviInfoLoading) {
15834
+ <select [disabled]="versions==null || versions.length==1" (change)="selectVersionChange($event)">
15835
+ @for (v of versions; track v; let i = $index) {
15836
+ <option [selected]="v===version" value="{{v}}">{{v}}@if (i==0) {
15837
+ (latest)
15838
+ }</option>
15839
+ }
15717
15840
  </select>
15841
+ }
15718
15842
  </fieldset>
15719
15843
  <fieldset>
15720
15844
  <legend>Navigate</legend>
15721
- <mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15722
- <div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
15723
- <button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
15724
- <mat-icon>first_page</mat-icon>
15725
- </button>
15726
- <button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
15727
- <mat-icon>chevron_left</mat-icon>
15728
- </button>
15729
- <button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
15730
- <mat-icon>chevron_right</mat-icon>
15731
- </button>
15732
- <button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
15733
- <mat-icon>last_page</mat-icon>
15734
- </button>
15735
- </div>
15736
- <p *ngIf="items && itemPos!==null && itemPos!==undefined">Item {{itemPos+1}} of {{items}}</p>
15845
+ @if (naviInfoLoading) {
15846
+ <mat-progress-spinner mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15847
+ }
15848
+ @if (!naviInfoLoading) {
15849
+ <div style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
15850
+ <button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
15851
+ <mat-icon>first_page</mat-icon>
15852
+ </button>
15853
+ <button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
15854
+ <mat-icon>chevron_left</mat-icon>
15855
+ </button>
15856
+ <button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
15857
+ <mat-icon>chevron_right</mat-icon>
15858
+ </button>
15859
+ <button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
15860
+ <mat-icon>last_page</mat-icon>
15861
+ </button>
15862
+ </div>
15863
+ }
15864
+ @if (items && itemPos!==null && itemPos!==undefined) {
15865
+ <p>Item {{itemPos+1}} of {{items}}</p>
15866
+ }
15737
15867
  <p>(List ordered by date)</p>
15738
15868
  </fieldset>
15739
15869
  </div>
15740
15870
  </div>
15741
- `, isInline: true, styles: [":host{flex:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
15871
+ `, isInline: true, styles: [":host{flex:0}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
15742
15872
  }
15743
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileNaviComponent, decorators: [{
15873
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileNaviComponent, decorators: [{
15744
15874
  type: Component,
15745
15875
  args: [{ selector: 'app-recording-file-navi', template: `
15746
15876
  <div #controlPanel style="display:flex;flex-direction: row;">
15747
15877
  <div #navi style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
15748
15878
  <fieldset>
15749
15879
  <legend>Versions</legend>
15750
- <mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15751
- <select *ngIf="!naviInfoLoading" [disabled]="versions==null || versions.length==1" (change)="selectVersionChange($event)">
15752
- <option *ngFor="let v of versions; let i = index" [selected]="v===version" value="{{v}}">{{v}}<ng-container *ngIf="i==0"> (latest)</ng-container></option>
15880
+ @if (naviInfoLoading) {
15881
+ <mat-progress-spinner mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15882
+ }
15883
+ @if (!naviInfoLoading) {
15884
+ <select [disabled]="versions==null || versions.length==1" (change)="selectVersionChange($event)">
15885
+ @for (v of versions; track v; let i = $index) {
15886
+ <option [selected]="v===version" value="{{v}}">{{v}}@if (i==0) {
15887
+ (latest)
15888
+ }</option>
15889
+ }
15753
15890
  </select>
15891
+ }
15754
15892
  </fieldset>
15755
15893
  <fieldset>
15756
15894
  <legend>Navigate</legend>
15757
- <mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15758
- <div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
15759
- <button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
15760
- <mat-icon>first_page</mat-icon>
15761
- </button>
15762
- <button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
15763
- <mat-icon>chevron_left</mat-icon>
15764
- </button>
15765
- <button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
15766
- <mat-icon>chevron_right</mat-icon>
15767
- </button>
15768
- <button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
15769
- <mat-icon>last_page</mat-icon>
15770
- </button>
15771
- </div>
15772
- <p *ngIf="items && itemPos!==null && itemPos!==undefined">Item {{itemPos+1}} of {{items}}</p>
15895
+ @if (naviInfoLoading) {
15896
+ <mat-progress-spinner mode="indeterminate" [diameter]="15"></mat-progress-spinner>
15897
+ }
15898
+ @if (!naviInfoLoading) {
15899
+ <div style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
15900
+ <button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
15901
+ <mat-icon>first_page</mat-icon>
15902
+ </button>
15903
+ <button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
15904
+ <mat-icon>chevron_left</mat-icon>
15905
+ </button>
15906
+ <button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
15907
+ <mat-icon>chevron_right</mat-icon>
15908
+ </button>
15909
+ <button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
15910
+ <mat-icon>last_page</mat-icon>
15911
+ </button>
15912
+ </div>
15913
+ }
15914
+ @if (items && itemPos!==null && itemPos!==undefined) {
15915
+ <p>Item {{itemPos+1}} of {{items}}</p>
15916
+ }
15773
15917
  <p>(List ordered by date)</p>
15774
15918
  </fieldset>
15775
15919
  </div>
15776
15920
  </div>
15777
- `, standalone: false, styles: [":host{flex:0}\n"] }]
15921
+ `, standalone: false, styles: [":host{flex:0}\n"] }]
15778
15922
  }], ctorParameters: () => [], propDecorators: { firstAction: [{
15779
15923
  type: Input
15780
15924
  }], prevAction: [{
@@ -15837,80 +15981,108 @@ class RecordingFileMetaComponent {
15837
15981
  }
15838
15982
  return t;
15839
15983
  }
15840
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileMetaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15841
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecordingFileMetaComponent, isStandalone: false, selector: "app-recording-file-meta", inputs: { sessionId: "sessionId", stateLoading: "stateLoading", recordingFile: "recordingFile" }, ngImport: i0, template: `
15984
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileMetaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15985
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: RecordingFileMetaComponent, isStandalone: false, selector: "app-recording-file-meta", inputs: { sessionId: "sessionId", stateLoading: "stateLoading", recordingFile: "recordingFile" }, ngImport: i0, template: `
15842
15986
  <mat-card appearance="outlined">
15843
15987
  <mat-card-title>Recording file ID: {{recordingFile?.recordingFileId}}</mat-card-title>
15844
15988
  <mat-card-content>
15845
- <mat-progress-spinner *ngIf="stateLoading" mode="indeterminate" [diameter]="20"></mat-progress-spinner>
15989
+ @if (stateLoading) {
15990
+ <mat-progress-spinner mode="indeterminate" [diameter]="20"></mat-progress-spinner>
15991
+ }
15846
15992
  <table>
15847
- <tr *ngIf="itemCode">
15848
- <td>Itemcode:</td>
15849
- <td>{{itemCode}}</td>
15850
- </tr>
15851
- <tr *ngIf="uuid && !itemCode">
15852
- <td>UUID:</td>
15853
- <td>{{uuid}}</td>
15854
- </tr>
15855
- <tr *ngIf="recordingFile?.startedDate">
15856
- <td>Started:</td>
15857
- <td>{{recordingFile?.startedDate}}</td>
15858
- </tr>
15859
- <tr *ngIf="!recordingFile?.startedDate && recordingFile?.date">
15860
- <td>Date:</td>
15861
- <td>{{recordingFile?.date}}</td>
15862
- </tr>
15863
- <tr *ngIf="itemCode">
15864
- <td>Prompt:</td>
15865
- <td>{{recordingAsPlainText()}}</td>
15866
- </tr>
15867
-
15868
- <tr *ngIf="sessionId">
15869
- <td>Session:</td>
15870
- <td>{{sessionId}}</td>
15871
- </tr>
15993
+ @if (itemCode) {
15994
+ <tr>
15995
+ <td>Itemcode:</td>
15996
+ <td>{{itemCode}}</td>
15997
+ </tr>
15998
+ }
15999
+ @if (uuid && !itemCode) {
16000
+ <tr>
16001
+ <td>UUID:</td>
16002
+ <td>{{uuid}}</td>
16003
+ </tr>
16004
+ }
16005
+ @if (recordingFile?.startedDate) {
16006
+ <tr>
16007
+ <td>Started:</td>
16008
+ <td>{{recordingFile?.startedDate}}</td>
16009
+ </tr>
16010
+ }
16011
+ @if (!recordingFile?.startedDate && recordingFile?.date) {
16012
+ <tr>
16013
+ <td>Date:</td>
16014
+ <td>{{recordingFile?.date}}</td>
16015
+ </tr>
16016
+ }
16017
+ @if (itemCode) {
16018
+ <tr>
16019
+ <td>Prompt:</td>
16020
+ <td>{{recordingAsPlainText()}}</td>
16021
+ </tr>
16022
+ }
16023
+
16024
+ @if (sessionId) {
16025
+ <tr>
16026
+ <td>Session:</td>
16027
+ <td>{{sessionId}}</td>
16028
+ </tr>
16029
+ }
15872
16030
  </table>
15873
16031
  </mat-card-content>
15874
16032
  </mat-card>
15875
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] }); }
16033
+ `, isInline: true, dependencies: [{ kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i2$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$2.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i2$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] }); }
15876
16034
  }
15877
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileMetaComponent, decorators: [{
16035
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileMetaComponent, decorators: [{
15878
16036
  type: Component,
15879
16037
  args: [{ selector: 'app-recording-file-meta', template: `
15880
16038
  <mat-card appearance="outlined">
15881
16039
  <mat-card-title>Recording file ID: {{recordingFile?.recordingFileId}}</mat-card-title>
15882
16040
  <mat-card-content>
15883
- <mat-progress-spinner *ngIf="stateLoading" mode="indeterminate" [diameter]="20"></mat-progress-spinner>
16041
+ @if (stateLoading) {
16042
+ <mat-progress-spinner mode="indeterminate" [diameter]="20"></mat-progress-spinner>
16043
+ }
15884
16044
  <table>
15885
- <tr *ngIf="itemCode">
15886
- <td>Itemcode:</td>
15887
- <td>{{itemCode}}</td>
15888
- </tr>
15889
- <tr *ngIf="uuid && !itemCode">
15890
- <td>UUID:</td>
15891
- <td>{{uuid}}</td>
15892
- </tr>
15893
- <tr *ngIf="recordingFile?.startedDate">
15894
- <td>Started:</td>
15895
- <td>{{recordingFile?.startedDate}}</td>
15896
- </tr>
15897
- <tr *ngIf="!recordingFile?.startedDate && recordingFile?.date">
15898
- <td>Date:</td>
15899
- <td>{{recordingFile?.date}}</td>
15900
- </tr>
15901
- <tr *ngIf="itemCode">
15902
- <td>Prompt:</td>
15903
- <td>{{recordingAsPlainText()}}</td>
15904
- </tr>
15905
-
15906
- <tr *ngIf="sessionId">
15907
- <td>Session:</td>
15908
- <td>{{sessionId}}</td>
15909
- </tr>
16045
+ @if (itemCode) {
16046
+ <tr>
16047
+ <td>Itemcode:</td>
16048
+ <td>{{itemCode}}</td>
16049
+ </tr>
16050
+ }
16051
+ @if (uuid && !itemCode) {
16052
+ <tr>
16053
+ <td>UUID:</td>
16054
+ <td>{{uuid}}</td>
16055
+ </tr>
16056
+ }
16057
+ @if (recordingFile?.startedDate) {
16058
+ <tr>
16059
+ <td>Started:</td>
16060
+ <td>{{recordingFile?.startedDate}}</td>
16061
+ </tr>
16062
+ }
16063
+ @if (!recordingFile?.startedDate && recordingFile?.date) {
16064
+ <tr>
16065
+ <td>Date:</td>
16066
+ <td>{{recordingFile?.date}}</td>
16067
+ </tr>
16068
+ }
16069
+ @if (itemCode) {
16070
+ <tr>
16071
+ <td>Prompt:</td>
16072
+ <td>{{recordingAsPlainText()}}</td>
16073
+ </tr>
16074
+ }
16075
+
16076
+ @if (sessionId) {
16077
+ <tr>
16078
+ <td>Session:</td>
16079
+ <td>{{sessionId}}</td>
16080
+ </tr>
16081
+ }
15910
16082
  </table>
15911
16083
  </mat-card-content>
15912
16084
  </mat-card>
15913
- `, standalone: false }]
16085
+ `, standalone: false }]
15914
16086
  }], ctorParameters: () => [], propDecorators: { sessionId: [{
15915
16087
  type: Input
15916
16088
  }], stateLoading: [{
@@ -16279,8 +16451,8 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
16279
16451
  });
16280
16452
  }
16281
16453
  }
16282
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileViewComponent, deps: [{ token: RecordingFileService }, { token: RecordingService }, { token: SessionService }, { token: i4$2.Router }, { token: i4$2.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
16283
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecordingFileViewComponent, isStandalone: false, selector: "app-audiodisplayplayer", viewQueries: [{ propertyName: "ac", first: true, predicate: AudioDisplayScrollPane, descendants: true }], usesInheritance: true, ngImport: i0, template: `
16454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileViewComponent, deps: [{ token: RecordingFileService }, { token: RecordingService }, { token: SessionService }, { token: i4.Router }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
16455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: RecordingFileViewComponent, isStandalone: false, selector: "app-audiodisplayplayer", viewQueries: [{ propertyName: "ac", first: true, predicate: AudioDisplayScrollPane, descendants: true }], usesInheritance: true, ngImport: i0, template: `
16284
16456
 
16285
16457
  <audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
16286
16458
  <div class="ctrlview">
@@ -16299,7 +16471,7 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
16299
16471
  </div>
16300
16472
  `, isInline: true, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"], dependencies: [{ kind: "component", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }, { kind: "component", type: RecordingFileNaviComponent, selector: "app-recording-file-navi", inputs: ["firstAction", "prevAction", "nextAction", "lastAction", "items", "itemPos", "selectVersion", "versions", "version", "naviInfoLoading"] }, { kind: "component", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: ["sessionId", "stateLoading", "recordingFile"] }] }); }
16301
16473
  }
16302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileViewComponent, decorators: [{
16474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileViewComponent, decorators: [{
16303
16475
  type: Component,
16304
16476
  args: [{ selector: 'app-audiodisplayplayer', template: `
16305
16477
 
@@ -16319,7 +16491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
16319
16491
  <app-recording-file-navi [items]="availRecFiles?.length" [itemPos]="posInList" [version]="recordingFileVersion" [versions]="versions" [firstAction]="firstAction" [prevAction]="prevAction" [nextAction]="nextAction" [lastAction]="lastAction" [selectVersion]="toVersionAction" [naviInfoLoading]="naviInfoLoading"></app-recording-file-navi>
16320
16492
  </div>
16321
16493
  `, standalone: false, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"] }]
16322
- }], ctorParameters: () => [{ type: RecordingFileService }, { type: RecordingService }, { type: SessionService }, { type: i4$2.Router }, { type: i4$2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$3.MatDialog }], propDecorators: { ac: [{
16494
+ }], ctorParameters: () => [{ type: RecordingFileService }, { type: RecordingService }, { type: SessionService }, { type: i4.Router }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$3.MatDialog }], propDecorators: { ac: [{
16323
16495
  type: ViewChild,
16324
16496
  args: [AudioDisplayScrollPane]
16325
16497
  }] } });
@@ -16406,8 +16578,8 @@ class RecordingFileUI extends RecordingFileViewComponent {
16406
16578
  }
16407
16579
  }
16408
16580
  }
16409
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileUI, deps: [{ token: RecordingFileService }, { token: RecordingService }, { token: SessionService }, { token: i4$2.Router }, { token: i4$2.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$3.MatDialog }, { token: i6.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
16410
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecordingFileUI, isStandalone: false, selector: "app-audiodisplayplayer", usesInheritance: true, ngImport: i0, template: `
16581
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileUI, deps: [{ token: RecordingFileService }, { token: RecordingService }, { token: SessionService }, { token: i4.Router }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$3.MatDialog }, { token: i6$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
16582
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: RecordingFileUI, isStandalone: false, selector: "app-audiodisplayplayer", usesInheritance: true, ngImport: i0, template: `
16411
16583
  <h1>Recording file editing</h1>
16412
16584
  <p>On export or delivery the editing selection of the recording file is cut out. If no editing selection is applied the original file is exported.</p>
16413
16585
 
@@ -16427,9 +16599,9 @@ class RecordingFileUI extends RecordingFileViewComponent {
16427
16599
  </div>
16428
16600
 
16429
16601
  <button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
16430
- `, isInline: true, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"], dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }, { kind: "component", type: RecordingFileNaviComponent, selector: "app-recording-file-navi", inputs: ["firstAction", "prevAction", "nextAction", "lastAction", "items", "itemPos", "selectVersion", "versions", "version", "naviInfoLoading"] }, { kind: "component", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: ["sessionId", "stateLoading", "recordingFile"] }] }); }
16602
+ `, isInline: true, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"], dependencies: [{ kind: "component", type: i3$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }, { kind: "component", type: RecordingFileNaviComponent, selector: "app-recording-file-navi", inputs: ["firstAction", "prevAction", "nextAction", "lastAction", "items", "itemPos", "selectVersion", "versions", "version", "naviInfoLoading"] }, { kind: "component", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: ["sessionId", "stateLoading", "recordingFile"] }] }); }
16431
16603
  }
16432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingFileUI, decorators: [{
16604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingFileUI, decorators: [{
16433
16605
  type: Component,
16434
16606
  args: [{ selector: 'app-audiodisplayplayer', template: `
16435
16607
  <h1>Recording file editing</h1>
@@ -16452,7 +16624,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
16452
16624
 
16453
16625
  <button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
16454
16626
  `, standalone: false, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"] }]
16455
- }], ctorParameters: () => [{ type: RecordingFileService }, { type: RecordingService }, { type: SessionService }, { type: i4$2.Router }, { type: i4$2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$3.MatDialog }, { type: i6.MatSnackBar }] });
16627
+ }], ctorParameters: () => [{ type: RecordingFileService }, { type: RecordingService }, { type: SessionService }, { type: i4.Router }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$3.MatDialog }, { type: i6$1.MatSnackBar }] });
16456
16628
 
16457
16629
  class MediaUtils {
16458
16630
  static toMediaTime(timeInSeconds) {
@@ -16543,8 +16715,8 @@ class RecordingList {
16543
16715
  }
16544
16716
  return cached;
16545
16717
  }
16546
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16547
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecordingList, isStandalone: false, selector: "app-recordinglist", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, ngImport: i0, template: `
16718
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16719
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: RecordingList, isStandalone: false, selector: "app-recordinglist", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, ngImport: i0, template: `
16548
16720
  <mat-card appearance="outlined">
16549
16721
  <mat-card-header>
16550
16722
  <h2>Recording list</h2>
@@ -16588,9 +16760,9 @@ class RecordingList {
16588
16760
  </mat-card-content>
16589
16761
  </mat-card>
16590
16762
 
16591
- `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-mdc-cell,.mat-mdc-header-cell{padding-left:5px;padding-right:5px}.mat-mdc-card,.mat-mdc-card-header,.mat-mdc-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}.spr-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ":host{position:relative;margin:0;padding:0;background:#d3d3d3;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "component", type: i4$3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4$3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4$3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4$3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4$3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4$3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4$3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4$3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4$3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4$3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }] }); }
16763
+ `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-mdc-cell,.mat-mdc-header-cell{padding-left:5px;padding-right:5px}.mat-mdc-card,.mat-mdc-card-header,.mat-mdc-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}.spr-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ":host{position:relative;margin:0;padding:0;background:#d3d3d3;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2$2.MatCardHeader, selector: "mat-card-header" }, { kind: "component", type: i4$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] }); }
16592
16764
  }
16593
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecordingList, decorators: [{
16765
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecordingList, decorators: [{
16594
16766
  type: Component,
16595
16767
  args: [{ selector: 'app-recordinglist', template: `
16596
16768
  <mat-card appearance="outlined">
@@ -16669,8 +16841,8 @@ class RecorderCombiPane extends ResponsiveComponent {
16669
16841
  selectTop() {
16670
16842
  this.recordingListComp.selectTop();
16671
16843
  }
16672
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecorderCombiPane, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
16673
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RecorderCombiPane, isStandalone: false, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
16844
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecorderCombiPane, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
16845
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: RecorderCombiPane, isStandalone: false, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
16674
16846
  <div class="scrollList">
16675
16847
  <app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
16676
16848
  </div>
@@ -16684,7 +16856,7 @@ class RecorderCombiPane extends ResponsiveComponent {
16684
16856
  </div>
16685
16857
  `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-mdc-cell,.mat-mdc-header-cell{padding-left:5px;padding-right:5px}.mat-mdc-card,.mat-mdc-card-header,.mat-mdc-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}.spr-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:#d3d3d3;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:#d3d3d3;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "component", type: AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: RecordingList, selector: "app-recordinglist", inputs: ["selectDisabled", "selectedRecordingFile"], outputs: ["selectedRecordingFileChanged"] }] }); }
16686
16858
  }
16687
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecorderCombiPane, decorators: [{
16859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: RecorderCombiPane, decorators: [{
16688
16860
  type: Component,
16689
16861
  args: [{ selector: 'app-recordercombipane', template: `
16690
16862
  <div class="scrollList">
@@ -17592,48 +17764,56 @@ class AudioRecorder extends BasicRecorder {
17592
17764
  this.changeDetectorRef.detectChanges();
17593
17765
  }
17594
17766
  }
17595
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioRecorder, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$3.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
17596
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioRecorder, isStandalone: false, selector: "app-audiorecorder", inputs: { projectName: "projectName", dataSaved: "dataSaved" }, host: { listeners: { "window:keypress": "onKeyPress($event)", "window:keydown": "onKeyDown($event)" } }, providers: [SessionService], viewQueries: [{ propertyName: "recorderCombiPane", first: true, predicate: RecorderCombiPane, descendants: true, static: true }, { propertyName: "liveLevelDisplay", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
17767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioRecorder, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1$3.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
17768
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: AudioRecorder, isStandalone: false, selector: "app-audiorecorder", inputs: { projectName: "projectName", dataSaved: "dataSaved" }, host: { listeners: { "window:keypress": "onKeyPress($event)", "window:keydown": "onKeyDown($event)" } }, providers: [SessionService], viewQueries: [{ propertyName: "recorderCombiPane", first: true, predicate: RecorderCombiPane, descendants: true, static: true }, { propertyName: "liveLevelDisplay", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
17597
17769
  <app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
17598
17770
  <app-warningbar [show]="isDefaultAudioTestSession()"
17599
- warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
17771
+ warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
17600
17772
  <app-recordercombipane (selectedRecordingFileChanged)="selectRecordingFile($event)"
17601
- [audioSignalCollapsed]="audioSignalCollapsed"
17602
- [selectedRecordingFile]="displayRecFile"
17603
- [selectDisabled]="isActive()"
17604
- [displayAudioClip]="displayAudioClip"
17605
- [playStartAction]="controlAudioPlayer?.startAction"
17606
- [playStopAction]="controlAudioPlayer?.stopAction"
17607
- [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
17608
- [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
17773
+ [audioSignalCollapsed]="audioSignalCollapsed"
17774
+ [selectedRecordingFile]="displayRecFile"
17775
+ [selectDisabled]="isActive()"
17776
+ [displayAudioClip]="displayAudioClip"
17777
+ [playStartAction]="controlAudioPlayer?.startAction"
17778
+ [playStopAction]="controlAudioPlayer?.stopAction"
17779
+ [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
17780
+ [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
17609
17781
  ></app-recordercombipane>
17610
-
17782
+
17611
17783
  <div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
17612
17784
  <audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
17613
- [displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
17785
+ [displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
17614
17786
  <div style="display:flex;flex-direction: row">
17615
17787
  <spr-recordingitemcontrols style="flex:10 0 1px"
17616
- [disableAudioDetails]="disableAudioDetails"
17617
- [audioLoaded]="audioLoaded"
17618
- [playStartAction]="controlAudioPlayer?.startAction"
17619
- [playStopAction]="controlAudioPlayer?.stopAction"
17620
- [peakDbLvl]="peakLevelInDb"
17621
- [agc]="this.ac?.agcStatus"
17622
- (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
17788
+ [disableAudioDetails]="disableAudioDetails"
17789
+ [audioLoaded]="audioLoaded"
17790
+ [playStartAction]="controlAudioPlayer?.startAction"
17791
+ [playStopAction]="controlAudioPlayer?.stopAction"
17792
+ [peakDbLvl]="peakLevelInDb"
17793
+ [agc]="this.ac?.agcStatus"
17794
+ (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
17623
17795
  </spr-recordingitemcontrols>
17624
-
17625
- <app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0"
17626
- [value]="uploadProgress"
17627
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17628
- <app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
17629
- <app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0"
17630
- [ready]="dataSaved && !isActive()"></app-readystateindicator>
17796
+
17797
+ @if (screenXs && enableUploadRecordings) {
17798
+ <app-uploadstatus class="ricontrols dark" style="flex:0 0 0"
17799
+ [value]="uploadProgress"
17800
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17801
+ }
17802
+ @if (screenXs) {
17803
+ <app-wakelockindicator class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
17804
+ }
17805
+ @if (screenXs) {
17806
+ <app-readystateindicator class="ricontrols dark" style="flex:0 0 0"
17807
+ [ready]="dataSaved && !isActive()"></app-readystateindicator>
17808
+ }
17631
17809
  </div>
17632
17810
  </div>
17633
17811
  <div #controlpanel class="controlpanel">
17634
- <app-sprstatusdisplay *ngIf="!screenXs" style="flex:0 1 30%;" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
17635
- [statusWaiting]="statusWaiting"
17636
- class="hidden-xs"></app-sprstatusdisplay>
17812
+ @if (!screenXs) {
17813
+ <app-sprstatusdisplay style="flex:0 1 30%;" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
17814
+ [statusWaiting]="statusWaiting"
17815
+ class="hidden-xs"></app-sprstatusdisplay>
17816
+ }
17637
17817
  <div [class.startstop]="!screenXs" [class.startstopscreenxs]="screenXs">
17638
17818
  <div style="align-content: center">
17639
17819
  <button (click)="startStopPerform()" [disabled]="startDisabled() && stopDisabled()" mat-raised-button class="bigbutton">
@@ -17643,59 +17823,73 @@ class AudioRecorder extends BasicRecorder {
17643
17823
  </div>
17644
17824
  </div>
17645
17825
  <div style="flex:0 1 30%;display:flex;justify-items: flex-end;justify-content:flex-end" >
17646
- <app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols"
17647
- [value]="uploadProgress"
17648
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17649
- <app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
17650
- <app-readystateindicator *ngIf="!screenXs" class="ricontrols"
17651
- [ready]="dataSaved && !isActive()"></app-readystateindicator>
17826
+ @if (!screenXs && enableUploadRecordings) {
17827
+ <app-uploadstatus class="ricontrols"
17828
+ [value]="uploadProgress"
17829
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17830
+ }
17831
+ @if (!screenXs) {
17832
+ <app-wakelockindicator class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
17833
+ }
17834
+ @if (!screenXs) {
17835
+ <app-readystateindicator class="ricontrols"
17836
+ [ready]="dataSaved && !isActive()"></app-readystateindicator>
17837
+ }
17652
17838
  </div>
17653
17839
  </div>
17654
- `, isInline: true, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;flex:1 0 30%;align-items:center;text-align:center;align-content:center}\n", ".startstopscreenxs{width:100%;flex:1 0 100%;align-items:center;text-align:center;align-content:center}\n", ".bigbutton{vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap;letter-spacing:normal;min-width:70px;min-height:50px;border-radius:20px}\n", ".bigbuttonicon{min-width:50px;min-height:50px;font-size:50px}\n", ".bigbuttontext{font-weight:bolder;font-size:14px;vertical-align:middle}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: ["screenLocked"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }, { kind: "component", type: WarningBar, selector: "app-warningbar", inputs: ["warningText", "show"] }, { kind: "component", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: ["selectDisabled", "selectedRecordingFile", "audioSignalCollapsed", "displayAudioClip", "playStartAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "playStopAction"], outputs: ["selectedRecordingFileChanged"] }] }); }
17840
+ `, isInline: true, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;flex:1 0 30%;align-items:center;text-align:center;align-content:center}\n", ".startstopscreenxs{width:100%;flex:1 0 100%;align-items:center;text-align:center;align-content:center}\n", ".bigbutton{vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap;letter-spacing:normal;min-width:70px;min-height:50px;border-radius:20px}\n", ".bigbuttonicon{min-width:50px;min-height:50px;font-size:50px}\n", ".bigbuttontext{font-weight:bolder;font-size:14px;vertical-align:middle}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: ["screenLocked"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }, { kind: "component", type: WarningBar, selector: "app-warningbar", inputs: ["warningText", "show"] }, { kind: "component", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: ["selectDisabled", "selectedRecordingFile", "audioSignalCollapsed", "displayAudioClip", "playStartAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "playStopAction"], outputs: ["selectedRecordingFileChanged"] }] }); }
17655
17841
  }
17656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioRecorder, decorators: [{
17842
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioRecorder, decorators: [{
17657
17843
  type: Component,
17658
17844
  args: [{ selector: 'app-audiorecorder', providers: [SessionService], template: `
17659
17845
  <app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
17660
17846
  <app-warningbar [show]="isDefaultAudioTestSession()"
17661
- warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
17847
+ warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
17662
17848
  <app-recordercombipane (selectedRecordingFileChanged)="selectRecordingFile($event)"
17663
- [audioSignalCollapsed]="audioSignalCollapsed"
17664
- [selectedRecordingFile]="displayRecFile"
17665
- [selectDisabled]="isActive()"
17666
- [displayAudioClip]="displayAudioClip"
17667
- [playStartAction]="controlAudioPlayer?.startAction"
17668
- [playStopAction]="controlAudioPlayer?.stopAction"
17669
- [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
17670
- [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
17849
+ [audioSignalCollapsed]="audioSignalCollapsed"
17850
+ [selectedRecordingFile]="displayRecFile"
17851
+ [selectDisabled]="isActive()"
17852
+ [displayAudioClip]="displayAudioClip"
17853
+ [playStartAction]="controlAudioPlayer?.startAction"
17854
+ [playStopAction]="controlAudioPlayer?.stopAction"
17855
+ [playSelectionAction]="controlAudioPlayer?.startSelectionAction"
17856
+ [autoPlayOnSelectToggleAction]="controlAudioPlayer?.autoPlayOnSelectToggleAction"
17671
17857
  ></app-recordercombipane>
17672
-
17858
+
17673
17859
  <div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
17674
17860
  <audio-levelbar style="flex:1 0 1%" [streamingMode]="isRecording() || keepLiveLevel" [state]="liveLevelDisplayState"
17675
- [displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
17861
+ [displayLevelInfos]="displayAudioClip?.levelInfos"></audio-levelbar>
17676
17862
  <div style="display:flex;flex-direction: row">
17677
17863
  <spr-recordingitemcontrols style="flex:10 0 1px"
17678
- [disableAudioDetails]="disableAudioDetails"
17679
- [audioLoaded]="audioLoaded"
17680
- [playStartAction]="controlAudioPlayer?.startAction"
17681
- [playStopAction]="controlAudioPlayer?.stopAction"
17682
- [peakDbLvl]="peakLevelInDb"
17683
- [agc]="this.ac?.agcStatus"
17684
- (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
17864
+ [disableAudioDetails]="disableAudioDetails"
17865
+ [audioLoaded]="audioLoaded"
17866
+ [playStartAction]="controlAudioPlayer?.startAction"
17867
+ [playStopAction]="controlAudioPlayer?.stopAction"
17868
+ [peakDbLvl]="peakLevelInDb"
17869
+ [agc]="this.ac?.agcStatus"
17870
+ (onShowRecordingDetails)="audioSignalCollapsed=!audioSignalCollapsed">
17685
17871
  </spr-recordingitemcontrols>
17686
-
17687
- <app-uploadstatus *ngIf="screenXs && enableUploadRecordings" class="ricontrols dark" style="flex:0 0 0"
17688
- [value]="uploadProgress"
17689
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17690
- <app-wakelockindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
17691
- <app-readystateindicator *ngIf="screenXs" class="ricontrols dark" style="flex:0 0 0"
17692
- [ready]="dataSaved && !isActive()"></app-readystateindicator>
17872
+
17873
+ @if (screenXs && enableUploadRecordings) {
17874
+ <app-uploadstatus class="ricontrols dark" style="flex:0 0 0"
17875
+ [value]="uploadProgress"
17876
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17877
+ }
17878
+ @if (screenXs) {
17879
+ <app-wakelockindicator class="ricontrols dark" style="flex:0 0 0" [screenLocked]="screenLocked"></app-wakelockindicator>
17880
+ }
17881
+ @if (screenXs) {
17882
+ <app-readystateindicator class="ricontrols dark" style="flex:0 0 0"
17883
+ [ready]="dataSaved && !isActive()"></app-readystateindicator>
17884
+ }
17693
17885
  </div>
17694
17886
  </div>
17695
17887
  <div #controlpanel class="controlpanel">
17696
- <app-sprstatusdisplay *ngIf="!screenXs" style="flex:0 1 30%;" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
17697
- [statusWaiting]="statusWaiting"
17698
- class="hidden-xs"></app-sprstatusdisplay>
17888
+ @if (!screenXs) {
17889
+ <app-sprstatusdisplay style="flex:0 1 30%;" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType"
17890
+ [statusWaiting]="statusWaiting"
17891
+ class="hidden-xs"></app-sprstatusdisplay>
17892
+ }
17699
17893
  <div [class.startstop]="!screenXs" [class.startstopscreenxs]="screenXs">
17700
17894
  <div style="align-content: center">
17701
17895
  <button (click)="startStopPerform()" [disabled]="startDisabled() && stopDisabled()" mat-raised-button class="bigbutton">
@@ -17705,15 +17899,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
17705
17899
  </div>
17706
17900
  </div>
17707
17901
  <div style="flex:0 1 30%;display:flex;justify-items: flex-end;justify-content:flex-end" >
17708
- <app-uploadstatus *ngIf="!screenXs && enableUploadRecordings" class="ricontrols"
17709
- [value]="uploadProgress"
17710
- [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17711
- <app-wakelockindicator *ngIf="!screenXs" class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
17712
- <app-readystateindicator *ngIf="!screenXs" class="ricontrols"
17713
- [ready]="dataSaved && !isActive()"></app-readystateindicator>
17902
+ @if (!screenXs && enableUploadRecordings) {
17903
+ <app-uploadstatus class="ricontrols"
17904
+ [value]="uploadProgress"
17905
+ [status]="uploadStatus" [awaitNewUpload]="processingRecording"></app-uploadstatus>
17906
+ }
17907
+ @if (!screenXs) {
17908
+ <app-wakelockindicator class="ricontrols" [screenLocked]="screenLocked"></app-wakelockindicator>
17909
+ }
17910
+ @if (!screenXs) {
17911
+ <app-readystateindicator class="ricontrols"
17912
+ [ready]="dataSaved && !isActive()"></app-readystateindicator>
17913
+ }
17714
17914
  </div>
17715
17915
  </div>
17716
- `, standalone: false, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;flex:1 0 30%;align-items:center;text-align:center;align-content:center}\n", ".startstopscreenxs{width:100%;flex:1 0 100%;align-items:center;text-align:center;align-content:center}\n", ".bigbutton{vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap;letter-spacing:normal;min-width:70px;min-height:50px;border-radius:20px}\n", ".bigbuttonicon{min-width:50px;min-height:50px;font-size:50px}\n", ".bigbuttontext{font-weight:bolder;font-size:14px;vertical-align:middle}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
17916
+ `, standalone: false, styles: [":host{flex:2;background:#d3d3d3;display:flex;flex-direction:column;margin:0;padding:0;height:100%;min-height:0px;overflow:hidden}\n", ".ricontrols{padding:4px;box-sizing:border-box;height:100%}\n", ".dark{background:#a9a9a9}\n", ".controlpanel{display:flex;flex-direction:row;align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n", ".startstop{width:100%;flex:1 0 30%;align-items:center;text-align:center;align-content:center}\n", ".startstopscreenxs{width:100%;flex:1 0 100%;align-items:center;text-align:center;align-content:center}\n", ".bigbutton{vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap;letter-spacing:normal;min-width:70px;min-height:50px;border-radius:20px}\n", ".bigbuttonicon{min-width:50px;min-height:50px;font-size:50px}\n", ".bigbuttontext{font-weight:bolder;font-size:14px;vertical-align:middle}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
17717
17917
  }], ctorParameters: () => [{ type: i1$2.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$3.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
17718
17918
  type: Inject,
17719
17919
  args: [SPEECHRECORDER_CONFIG]
@@ -17854,17 +18054,17 @@ class AudioRecorderComponent extends RecorderComponent {
17854
18054
  ready() {
17855
18055
  return this.dataSaved && !this.ar.isActive();
17856
18056
  }
17857
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioRecorderComponent, deps: [{ token: i4$2.ActivatedRoute }, { token: i4$2.Router }, { token: i0.ChangeDetectorRef }, { token: SessionService }, { token: ProjectService }, { token: SpeechRecorderUploader }], target: i0.ɵɵFactoryTarget.Component }); }
17858
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: AudioRecorderComponent, isStandalone: false, selector: "app-audiorecorder-comp", providers: [SessionService], viewQueries: [{ propertyName: "ar", first: true, predicate: AudioRecorder, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
18057
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioRecorderComponent, deps: [{ token: i4.ActivatedRoute }, { token: i4.Router }, { token: i0.ChangeDetectorRef }, { token: SessionService }, { token: ProjectService }, { token: SpeechRecorderUploader }], target: i0.ɵɵFactoryTarget.Component }); }
18058
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: AudioRecorderComponent, isStandalone: false, selector: "app-audiorecorder-comp", providers: [SessionService], viewQueries: [{ propertyName: "ar", first: true, predicate: AudioRecorder, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
17859
18059
  <app-audiorecorder [projectName]="_project?.name" [dataSaved]="dataSaved"></app-audiorecorder>
17860
18060
  `, isInline: true, styles: [":host{flex:2;display:flex;height:100%;flex-direction:column;min-height:0}\n"], dependencies: [{ kind: "component", type: AudioRecorder, selector: "app-audiorecorder", inputs: ["projectName", "dataSaved"] }] }); }
17861
18061
  }
17862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AudioRecorderComponent, decorators: [{
18062
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AudioRecorderComponent, decorators: [{
17863
18063
  type: Component,
17864
18064
  args: [{ selector: 'app-audiorecorder-comp', providers: [SessionService], template: `
17865
18065
  <app-audiorecorder [projectName]="_project?.name" [dataSaved]="dataSaved"></app-audiorecorder>
17866
18066
  `, standalone: false, styles: [":host{flex:2;display:flex;height:100%;flex-direction:column;min-height:0}\n"] }]
17867
- }], ctorParameters: () => [{ type: i4$2.ActivatedRoute }, { type: i4$2.Router }, { type: i0.ChangeDetectorRef }, { type: SessionService }, { type: ProjectService }, { type: SpeechRecorderUploader }], propDecorators: { ar: [{
18067
+ }], ctorParameters: () => [{ type: i4.ActivatedRoute }, { type: i4.Router }, { type: i0.ChangeDetectorRef }, { type: SessionService }, { type: ProjectService }, { type: SpeechRecorderUploader }], propDecorators: { ar: [{
17868
18068
  type: ViewChild,
17869
18069
  args: [AudioRecorder, { static: true }]
17870
18070
  }] } });
@@ -17897,19 +18097,19 @@ class SpeechrecorderngModule {
17897
18097
  ]
17898
18098
  };
17899
18099
  }
17900
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechrecorderngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17901
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: SpeechrecorderngModule, declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
17902
- ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder], imports: [i4$2.RouterModule, CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule, IntersectionObserverDirective], exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder] }); }
17903
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechrecorderngModule, providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader, provideHttpClient(withInterceptorsFromDi())], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule] }); }
18100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechrecorderngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18101
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.2", ngImport: i0, type: SpeechrecorderngModule, declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
18102
+ ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder], imports: [i4.RouterModule, CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule, IntersectionObserverDirective], exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder] }); }
18103
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechrecorderngModule, providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader, provideHttpClient(withInterceptorsFromDi())], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule] }); }
17904
18104
  }
17905
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpeechrecorderngModule, decorators: [{
18105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SpeechrecorderngModule, decorators: [{
17906
18106
  type: NgModule,
17907
18107
  args: [{ declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
17908
18108
  ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder],
17909
18109
  exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule, IntersectionObserverDirective], providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader, provideHttpClient(withInterceptorsFromDi())] }]
17910
18110
  }] });
17911
18111
 
17912
- const VERSION = '3.11.11';
18112
+ const VERSION = '3.11.13';
17913
18113
 
17914
18114
  const SPEECHRECORDER_ENVIRONMENT_DEFAULTS = {
17915
18115
  production: false,