speechrecorderng 3.4.3 → 3.4.5
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.
- package/esm2020/lib/action/action.mjs +3 -3
- package/esm2020/lib/audio/audio_display.mjs +9 -11
- package/esm2020/lib/audio/audio_player.mjs +4 -4
- package/esm2020/lib/audio/capture/capture.mjs +120 -106
- package/esm2020/lib/audio/io/stream.mjs +1 -1
- package/esm2020/lib/audio/net_audio_buffer.mjs +1 -1
- package/esm2020/lib/audio/playback/array_audio_buffer_source_node.mjs +2 -2
- package/esm2020/lib/audio/playback/audio_source_worklet_module_loader.mjs +2 -2
- package/esm2020/lib/audio/playback/inddb_audio_buffer_source_node.mjs +1 -1
- package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
- package/esm2020/lib/audio/ui/audio_display_control.mjs +4 -4
- package/esm2020/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
- package/esm2020/lib/audio/ui/audiosignal.mjs +4 -4
- package/esm2020/lib/audio/ui/container.mjs +6 -6
- package/esm2020/lib/audio/ui/livelevel.mjs +4 -4
- package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +4 -4
- package/esm2020/lib/audio/ui/sonagram.mjs +4 -4
- package/esm2020/lib/db/inddb.mjs +4 -4
- package/esm2020/lib/net/uploader.mjs +31 -28
- package/esm2020/lib/speechrecorder/project/project.service.mjs +7 -7
- package/esm2020/lib/speechrecorder/recordings/basic_recording.service.mjs +53 -51
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +124 -116
- package/esm2020/lib/speechrecorder/script/script.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +26 -27
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +1 -1
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +34 -32
- package/esm2020/lib/speechrecorder/session/progress.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/prompting.mjs +16 -16
- package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recording_list.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +6 -6
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +20 -19
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +43 -41
- package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +147 -137
- package/esm2020/lib/speechrecorder/session/session.service.mjs +15 -12
- package/esm2020/lib/speechrecorder/session/session_finished_dialog.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/warning_bar.mjs +4 -4
- package/esm2020/lib/speechrecorder/spruploader.mjs +4 -4
- package/esm2020/lib/speechrecorder/startstopsignal/startstopsignal.mjs +1 -2
- package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
- package/esm2020/lib/speechrecorderng.component.mjs +6 -6
- package/esm2020/lib/speechrecorderng.module.mjs +5 -5
- package/esm2020/lib/spr.config.mjs +4 -4
- package/esm2020/lib/spr.module.version.mjs +2 -2
- package/esm2020/lib/ui/canvas_layer_comp.mjs +4 -4
- package/esm2020/lib/ui/message_dialog.mjs +4 -4
- package/esm2020/lib/ui/recordingitem_display.mjs +8 -8
- package/esm2020/lib/ui/responsive_component.mjs +4 -4
- package/esm2020/lib/utils/scrollIntoViewToBottom.mjs +4 -4
- package/fesm2015/speechrecorderng.mjs +744 -701
- package/fesm2015/speechrecorderng.mjs.map +1 -1
- package/fesm2020/speechrecorderng.mjs +744 -701
- package/fesm2020/speechrecorderng.mjs.map +1 -1
- package/lib/action/action.d.ts +1 -1
- package/lib/audio/audio_display.d.ts +1 -3
- package/lib/audio/capture/capture.d.ts +2 -0
- package/lib/audio/io/stream.d.ts +1 -1
- package/lib/net/uploader.d.ts +6 -6
- package/lib/speechrecorder/project/project.service.d.ts +4 -4
- package/lib/speechrecorder/script/script.service.d.ts +2 -2
- package/lib/speechrecorder/session/audiorecorder.d.ts +1 -2
- package/lib/speechrecorder/session/basicrecorder.d.ts +1 -1
- package/lib/speechrecorder/session/controlpanel.d.ts +1 -1
- package/lib/speechrecorder/session/session.service.d.ts +2 -2
- package/lib/spr.module.version.d.ts +1 -1
- package/package.json +14 -14
|
@@ -6,17 +6,15 @@ import { HttpErrorResponse, HttpHeaders, HttpClientModule } from '@angular/commo
|
|
|
6
6
|
import { timeout } from 'rxjs/operators';
|
|
7
7
|
import * as i1$1 from '@angular/common';
|
|
8
8
|
import { CommonModule } from '@angular/common';
|
|
9
|
-
import * as i1$2 from '@angular/router';
|
|
10
|
-
import { RouterModule } from '@angular/router';
|
|
11
9
|
import * as i4$1 from '@angular/material/checkbox';
|
|
12
10
|
import { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';
|
|
13
11
|
import * as i2 from '@angular/material/icon';
|
|
14
12
|
import { MatIconModule } from '@angular/material/icon';
|
|
15
13
|
import * as i4 from '@angular/material/tooltip';
|
|
16
14
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
17
|
-
import * as i1$
|
|
15
|
+
import * as i1$2 from '@angular/cdk/layout';
|
|
18
16
|
import { Breakpoints } from '@angular/cdk/layout';
|
|
19
|
-
import * as i1$
|
|
17
|
+
import * as i1$3 from '@angular/material/dialog';
|
|
20
18
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
21
19
|
import * as i3 from '@angular/material/button';
|
|
22
20
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -25,13 +23,15 @@ import * as i3$1 from '@angular/material/progress-spinner';
|
|
|
25
23
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
26
24
|
import * as i7 from '@angular/material/progress-bar';
|
|
27
25
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
26
|
+
import * as i4$2 from '@angular/router';
|
|
27
|
+
import { RouterModule } from '@angular/router';
|
|
28
28
|
import * as i3$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
32
|
import * as i6 from '@angular/material/snack-bar';
|
|
33
33
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
34
|
-
import * as i4$
|
|
34
|
+
import * as i4$3 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';
|
|
@@ -95,7 +95,7 @@ class Action {
|
|
|
95
95
|
ctrl.disabled = this.disabled;
|
|
96
96
|
this.controls.push(ctrl);
|
|
97
97
|
if (actionEventName) {
|
|
98
|
-
ctrl.addEventListener(actionEventName, (
|
|
98
|
+
ctrl.addEventListener(actionEventName, () => {
|
|
99
99
|
this.perform();
|
|
100
100
|
});
|
|
101
101
|
}
|
|
@@ -103,7 +103,7 @@ class Action {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
removeControl(ctrl) {
|
|
106
|
-
|
|
106
|
+
const i = this.controls.indexOf(ctrl);
|
|
107
107
|
if (i >= 0) {
|
|
108
108
|
this.controls = this.controls.splice(i, 1);
|
|
109
109
|
}
|
|
@@ -944,7 +944,7 @@ class ArrayAudioBufferSourceNode extends AudioSourceNode {
|
|
|
944
944
|
}
|
|
945
945
|
};
|
|
946
946
|
}
|
|
947
|
-
fillBuffer(
|
|
947
|
+
fillBuffer() {
|
|
948
948
|
if (this._arrayAudioBuffer && this._audioInputStream && this._aisBufs) {
|
|
949
949
|
let filled = this.filledFrames;
|
|
950
950
|
let bufLen = 0;
|
|
@@ -1741,7 +1741,7 @@ const aswpStr = "\n" +
|
|
|
1741
1741
|
"\n" +
|
|
1742
1742
|
" let copied=0;\n" +
|
|
1743
1743
|
" do{\n" +
|
|
1744
|
-
" if(this.currentAudioBufferAvail
|
|
1744
|
+
" if(this.currentAudioBufferAvail===0){\n" +
|
|
1745
1745
|
" let nxtBuff=this.audioBuffers.shift();\n" +
|
|
1746
1746
|
" if(nxtBuff){\n" +
|
|
1747
1747
|
" this.currentAudioBuffer=nxtBuff;\n" +
|
|
@@ -3167,7 +3167,7 @@ class AudioCapture {
|
|
|
3167
3167
|
this.inddbAudioBuffer = null;
|
|
3168
3168
|
this.context = context;
|
|
3169
3169
|
this.n = navigator;
|
|
3170
|
-
this.context.addEventListener('statechange', (
|
|
3170
|
+
this.context.addEventListener('statechange', () => {
|
|
3171
3171
|
if (this.context.state !== 'running') {
|
|
3172
3172
|
this.close();
|
|
3173
3173
|
}
|
|
@@ -3313,6 +3313,104 @@ class AudioCapture {
|
|
|
3313
3313
|
console.log("Audio device: Id: " + di.deviceId + " groupId: " + di.groupId + " label: " + di.label + " kind: " + di.kind);
|
|
3314
3314
|
}
|
|
3315
3315
|
}
|
|
3316
|
+
addCaptureInterceptor() {
|
|
3317
|
+
const awn = new AudioWorkletNode(this.context, 'capture-interceptor');
|
|
3318
|
+
awn.onprocessorerror = (ev) => {
|
|
3319
|
+
let msg = 'Unknwon error';
|
|
3320
|
+
if (ev instanceof ErrorEvent) {
|
|
3321
|
+
msg = ev.message;
|
|
3322
|
+
}
|
|
3323
|
+
console.error("Capture audio worklet error: " + msg);
|
|
3324
|
+
if (this.listener) {
|
|
3325
|
+
this.listener.error(msg);
|
|
3326
|
+
}
|
|
3327
|
+
};
|
|
3328
|
+
let awnPt = awn.port;
|
|
3329
|
+
if (awnPt) {
|
|
3330
|
+
awnPt.onmessage = (ev) => {
|
|
3331
|
+
if (this.capturing) {
|
|
3332
|
+
let dt = ev.data;
|
|
3333
|
+
let chs = dt.chs;
|
|
3334
|
+
let adaLen = dt.data.length;
|
|
3335
|
+
if (DEBUG_TRACE_LEVEL > 8) {
|
|
3336
|
+
console.debug('Received data from worklet: ' + chs + ' ' + dt.len + ' Data chs: ' + adaLen);
|
|
3337
|
+
}
|
|
3338
|
+
let chunk = new Array(chs);
|
|
3339
|
+
const samples = this.framesRecorded * chs;
|
|
3340
|
+
if ((AudioStorageType.MEM_ENTIRE_AUTO_NET_CHUNKED === this.audioStorageType || AudioStorageType.MEM_CHUNKED_AUTO_NET_CHUNKED === this.audioStorageType) && this.data && samples > this._maxAutoNetMemStoreSamples) {
|
|
3341
|
+
this.data = null;
|
|
3342
|
+
}
|
|
3343
|
+
//console.debug("Data initialized: "+(this.data!=null));
|
|
3344
|
+
for (let ch = 0; ch < chs; ch++) {
|
|
3345
|
+
//console.debug("Data ch initialized: "+(this.data !=null && this.data[ch] !=null));
|
|
3346
|
+
if (ch < this.channelCount) {
|
|
3347
|
+
if (dt.data[ch]) {
|
|
3348
|
+
let fa = new Float32Array(dt.data[ch]);
|
|
3349
|
+
if (this.data && this.data[ch]) {
|
|
3350
|
+
this.data[ch].push(fa);
|
|
3351
|
+
}
|
|
3352
|
+
chunk[ch] = fa;
|
|
3353
|
+
// Use samples of channel 0 to count frames (samples)
|
|
3354
|
+
if (ch == 0) {
|
|
3355
|
+
this.framesRecorded += fa.length;
|
|
3356
|
+
}
|
|
3357
|
+
}
|
|
3358
|
+
}
|
|
3359
|
+
}
|
|
3360
|
+
if (this.audioOutStream) {
|
|
3361
|
+
try {
|
|
3362
|
+
this.audioOutStream.write(chunk);
|
|
3363
|
+
// // Random test error:
|
|
3364
|
+
// if(Math.random()>0.98) {
|
|
3365
|
+
// throw new Error('Test');
|
|
3366
|
+
// }
|
|
3367
|
+
}
|
|
3368
|
+
catch (err) {
|
|
3369
|
+
if (err instanceof Error) {
|
|
3370
|
+
this.persistError = err;
|
|
3371
|
+
}
|
|
3372
|
+
else {
|
|
3373
|
+
this.persistError = new Error('Error handling recorded audio data');
|
|
3374
|
+
}
|
|
3375
|
+
console.error("Capture error: " + err);
|
|
3376
|
+
try {
|
|
3377
|
+
this.stop();
|
|
3378
|
+
}
|
|
3379
|
+
catch (err2) {
|
|
3380
|
+
console.error("Capture next error (ignored): " + err2);
|
|
3381
|
+
}
|
|
3382
|
+
finally {
|
|
3383
|
+
if (this.listener) {
|
|
3384
|
+
let errExpl = '';
|
|
3385
|
+
if (err instanceof DOMException) {
|
|
3386
|
+
errExpl = ': ' + err.name + ': ' + err.message;
|
|
3387
|
+
}
|
|
3388
|
+
this.listener.error("Could not handle recorded audio data" + errExpl, "Please try to record again.");
|
|
3389
|
+
}
|
|
3390
|
+
else {
|
|
3391
|
+
this.close();
|
|
3392
|
+
}
|
|
3393
|
+
}
|
|
3394
|
+
}
|
|
3395
|
+
}
|
|
3396
|
+
if (AudioStorageType.DB_CHUNKED === this._audioStorageType && this._persistentAudioStorageTarget) {
|
|
3397
|
+
this.store();
|
|
3398
|
+
}
|
|
3399
|
+
}
|
|
3400
|
+
};
|
|
3401
|
+
}
|
|
3402
|
+
// Tried to fix that Safari does not record the second channel
|
|
3403
|
+
// Does not help
|
|
3404
|
+
//awn.channelCount=this.channelCount;
|
|
3405
|
+
//awn.channelCountMode='explicit';
|
|
3406
|
+
//console.debug('Channel count explicitly set to '+this.channelCount);
|
|
3407
|
+
this.bufferingNode = awn;
|
|
3408
|
+
//this.bufferingNode.channelCount=this.channelCount;
|
|
3409
|
+
this._opened = true;
|
|
3410
|
+
if (this.listener) {
|
|
3411
|
+
this.listener.opened();
|
|
3412
|
+
}
|
|
3413
|
+
}
|
|
3316
3414
|
open(channelCount, selDeviceId, autoGainControlConfigs) {
|
|
3317
3415
|
//console.debug("Capture open: ctx state: "+this.context.state);
|
|
3318
3416
|
if (this.context.state !== 'running') {
|
|
@@ -3436,7 +3534,7 @@ class AudioCapture {
|
|
|
3436
3534
|
audio: {
|
|
3437
3535
|
deviceId: selDeviceId,
|
|
3438
3536
|
channelCount: channelCount,
|
|
3439
|
-
echoCancellation: false
|
|
3537
|
+
//echoCancellation: false
|
|
3440
3538
|
},
|
|
3441
3539
|
video: false,
|
|
3442
3540
|
};
|
|
@@ -3489,108 +3587,21 @@ class AudioCapture {
|
|
|
3489
3587
|
//const workletFileName = ('file-loader!./interceptor_worklet.js');
|
|
3490
3588
|
//const workletFileName = 'http://localhost:4200/assets/interceptor_worklet.js';
|
|
3491
3589
|
//console.log(awpStr);
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
};
|
|
3506
|
-
|
|
3507
|
-
if (awnPt) {
|
|
3508
|
-
awnPt.onmessage = (ev) => {
|
|
3509
|
-
if (this.capturing) {
|
|
3510
|
-
let dt = ev.data;
|
|
3511
|
-
let chs = dt.chs;
|
|
3512
|
-
let adaLen = dt.data.length;
|
|
3513
|
-
if (DEBUG_TRACE_LEVEL > 8) {
|
|
3514
|
-
console.debug('Received data from worklet: ' + chs + ' ' + dt.len + ' Data chs: ' + adaLen);
|
|
3515
|
-
}
|
|
3516
|
-
let chunk = new Array(chs);
|
|
3517
|
-
const samples = this.framesRecorded * chs;
|
|
3518
|
-
if ((AudioStorageType.MEM_ENTIRE_AUTO_NET_CHUNKED === this.audioStorageType || AudioStorageType.MEM_CHUNKED_AUTO_NET_CHUNKED === this.audioStorageType) && this.data && samples > this._maxAutoNetMemStoreSamples) {
|
|
3519
|
-
this.data = null;
|
|
3520
|
-
}
|
|
3521
|
-
//console.debug("Data initialized: "+(this.data!=null));
|
|
3522
|
-
for (let ch = 0; ch < chs; ch++) {
|
|
3523
|
-
//console.debug("Data ch initialized: "+(this.data !=null && this.data[ch] !=null));
|
|
3524
|
-
if (ch < this.channelCount) {
|
|
3525
|
-
if (dt.data[ch]) {
|
|
3526
|
-
let fa = new Float32Array(dt.data[ch]);
|
|
3527
|
-
if (this.data && this.data[ch]) {
|
|
3528
|
-
this.data[ch].push(fa);
|
|
3529
|
-
}
|
|
3530
|
-
chunk[ch] = fa;
|
|
3531
|
-
// Use samples of channel 0 to count frames (samples)
|
|
3532
|
-
if (ch == 0) {
|
|
3533
|
-
this.framesRecorded += fa.length;
|
|
3534
|
-
}
|
|
3535
|
-
}
|
|
3536
|
-
}
|
|
3537
|
-
}
|
|
3538
|
-
if (this.audioOutStream) {
|
|
3539
|
-
try {
|
|
3540
|
-
this.audioOutStream.write(chunk);
|
|
3541
|
-
// // Random test error:
|
|
3542
|
-
// if(Math.random()>0.98) {
|
|
3543
|
-
// throw new Error('Test');
|
|
3544
|
-
// }
|
|
3545
|
-
}
|
|
3546
|
-
catch (err) {
|
|
3547
|
-
if (err instanceof Error) {
|
|
3548
|
-
this.persistError = err;
|
|
3549
|
-
}
|
|
3550
|
-
else {
|
|
3551
|
-
this.persistError = new Error('Error handling recorded audio data');
|
|
3552
|
-
}
|
|
3553
|
-
console.error("Capture error: " + err);
|
|
3554
|
-
try {
|
|
3555
|
-
this.stop();
|
|
3556
|
-
}
|
|
3557
|
-
catch (err2) {
|
|
3558
|
-
console.error("Capture next error (ignored): " + err2);
|
|
3559
|
-
}
|
|
3560
|
-
finally {
|
|
3561
|
-
if (this.listener) {
|
|
3562
|
-
let errExpl = '';
|
|
3563
|
-
if (err instanceof DOMException) {
|
|
3564
|
-
errExpl = ': ' + err.name + ': ' + err.message;
|
|
3565
|
-
}
|
|
3566
|
-
this.listener.error("Could not handle recorded audio data" + errExpl, "Please try to record again.");
|
|
3567
|
-
}
|
|
3568
|
-
else {
|
|
3569
|
-
this.close();
|
|
3570
|
-
}
|
|
3571
|
-
}
|
|
3572
|
-
}
|
|
3573
|
-
}
|
|
3574
|
-
if (AudioStorageType.DB_CHUNKED === this._audioStorageType && this._persistentAudioStorageTarget) {
|
|
3575
|
-
this.store();
|
|
3576
|
-
}
|
|
3577
|
-
}
|
|
3578
|
-
};
|
|
3579
|
-
}
|
|
3580
|
-
// Tried to fix that Safari does not record the second channel
|
|
3581
|
-
// Does not help
|
|
3582
|
-
//awn.channelCount=this.channelCount;
|
|
3583
|
-
//awn.channelCountMode='explicit';
|
|
3584
|
-
//console.debug('Channel count explicitly set to '+this.channelCount);
|
|
3585
|
-
this.bufferingNode = awn;
|
|
3586
|
-
//this.bufferingNode.channelCount=this.channelCount;
|
|
3587
|
-
this._opened = true;
|
|
3588
|
-
if (this.listener) {
|
|
3589
|
-
this.listener.opened();
|
|
3590
|
-
}
|
|
3591
|
-
}).catch((error) => {
|
|
3592
|
-
console.log('Could not add module ' + error);
|
|
3593
|
-
});
|
|
3590
|
+
if (AudioCapture.captureInterceptorModuleRegistered) {
|
|
3591
|
+
// Required capture interceptor module already registered
|
|
3592
|
+
this.addCaptureInterceptor();
|
|
3593
|
+
}
|
|
3594
|
+
else {
|
|
3595
|
+
// Register capture interceptor module
|
|
3596
|
+
let audioWorkletModuleBlob = new Blob([awpStr], { type: 'text/javascript' });
|
|
3597
|
+
let audioWorkletModuleBlobUrl = window.URL.createObjectURL(audioWorkletModuleBlob);
|
|
3598
|
+
this.context.audioWorklet.addModule(audioWorkletModuleBlobUrl).then(() => {
|
|
3599
|
+
AudioCapture.captureInterceptorModuleRegistered = true;
|
|
3600
|
+
this.addCaptureInterceptor();
|
|
3601
|
+
}).catch((error) => {
|
|
3602
|
+
console.log('Could not add module ' + error);
|
|
3603
|
+
});
|
|
3604
|
+
}
|
|
3594
3605
|
}
|
|
3595
3606
|
else if (this.context.createScriptProcessor) {
|
|
3596
3607
|
// The ScriptProcessorNode Interface - DEPRECATED Only as fallback
|
|
@@ -3793,7 +3804,9 @@ class AudioCapture {
|
|
|
3793
3804
|
}
|
|
3794
3805
|
}
|
|
3795
3806
|
close() {
|
|
3796
|
-
this.mediaStream
|
|
3807
|
+
if (this.mediaStream) {
|
|
3808
|
+
this.mediaStream.disconnect();
|
|
3809
|
+
}
|
|
3797
3810
|
if (this.stream) {
|
|
3798
3811
|
const mts = this.stream.getTracks();
|
|
3799
3812
|
for (let i = 0; i < mts.length; i++) {
|
|
@@ -3867,7 +3880,8 @@ class AudioCapture {
|
|
|
3867
3880
|
}
|
|
3868
3881
|
}
|
|
3869
3882
|
AudioCapture.BUFFER_SIZE = 8192;
|
|
3870
|
-
AudioCapture.DEFAULT_MAX_NET_AUTO_MEM_STORE_SAMPLES = 2880000 * 5; // Default 5 minute at 48kHz
|
|
3883
|
+
AudioCapture.DEFAULT_MAX_NET_AUTO_MEM_STORE_SAMPLES = 2880000 * 5; // Default 5 minute at 48kHz
|
|
3884
|
+
AudioCapture.captureInterceptorModuleRegistered = false;
|
|
3871
3885
|
|
|
3872
3886
|
class WavFileFormat {
|
|
3873
3887
|
}
|
|
@@ -4505,7 +4519,7 @@ class Uploader {
|
|
|
4505
4519
|
si += v.size;
|
|
4506
4520
|
}
|
|
4507
4521
|
else if (typeof v === 'string') {
|
|
4508
|
-
// encode to
|
|
4522
|
+
// encode to UTF-8 to get upload size
|
|
4509
4523
|
si += this.te.encode().length;
|
|
4510
4524
|
}
|
|
4511
4525
|
});
|
|
@@ -4543,34 +4557,37 @@ class Uploader {
|
|
|
4543
4557
|
// pipe(timeout()) is not the same as xhr.timeout
|
|
4544
4558
|
let uploadedUpload = null;
|
|
4545
4559
|
//console.debug("Post upload: "+ul)
|
|
4546
|
-
this.http.post(ul.url, ul.data, { withCredentials: this.withCredentials }).pipe(timeout(timeoVal)).subscribe(
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
// The backend returned an unsuccessful response code.
|
|
4556
|
-
// The response body may contain clues as to what went wrong,
|
|
4557
|
-
console.error(`Upload error: Server returned code ${err.status}`);
|
|
4558
|
-
}
|
|
4559
|
-
this.processError(ul);
|
|
4560
|
-
}, () => {
|
|
4561
|
-
//console.debug('Upload complete method called')
|
|
4562
|
-
if (uploadedUpload) {
|
|
4563
|
-
if (this.DEBUG_DELAY > 0) {
|
|
4564
|
-
window.setTimeout(() => {
|
|
4565
|
-
this.uploadDone(ul);
|
|
4566
|
-
}, this.DEBUG_DELAY);
|
|
4560
|
+
this.http.post(ul.url, ul.data, { withCredentials: this.withCredentials }).pipe(timeout(timeoVal)).subscribe({
|
|
4561
|
+
next: (data) => {
|
|
4562
|
+
uploadedUpload = ul;
|
|
4563
|
+
//console.debug('Next method called for upload: '+uploadedUpload)
|
|
4564
|
+
},
|
|
4565
|
+
error: (err) => {
|
|
4566
|
+
if (err.error instanceof Error) {
|
|
4567
|
+
// A client-side or network error occurred. Handle it accordingly.
|
|
4568
|
+
console.error('Upload error occurred:', err.error.message);
|
|
4567
4569
|
}
|
|
4568
4570
|
else {
|
|
4569
|
-
|
|
4571
|
+
// The backend returned an unsuccessful response code.
|
|
4572
|
+
// The response body may contain clues as to what went wrong,
|
|
4573
|
+
console.error(`Upload error: Server returned code ${err.status}`);
|
|
4574
|
+
}
|
|
4575
|
+
this.processError(ul);
|
|
4576
|
+
}, complete: () => {
|
|
4577
|
+
//console.debug('Upload complete method called')
|
|
4578
|
+
if (uploadedUpload) {
|
|
4579
|
+
if (this.DEBUG_DELAY > 0) {
|
|
4580
|
+
window.setTimeout(() => {
|
|
4581
|
+
this.uploadDone(ul);
|
|
4582
|
+
}, this.DEBUG_DELAY);
|
|
4583
|
+
}
|
|
4584
|
+
else {
|
|
4585
|
+
this.uploadDone(uploadedUpload);
|
|
4586
|
+
}
|
|
4587
|
+
}
|
|
4588
|
+
else {
|
|
4589
|
+
console.error('Upload post complete, but upload not set in next method!');
|
|
4570
4590
|
}
|
|
4571
|
-
}
|
|
4572
|
-
else {
|
|
4573
|
-
console.error('Upload post complete, but upload not set in next method!');
|
|
4574
4591
|
}
|
|
4575
4592
|
});
|
|
4576
4593
|
}
|
|
@@ -4585,7 +4602,7 @@ class Uploader {
|
|
|
4585
4602
|
// set retry timer
|
|
4586
4603
|
this.retryTimerId = window.setTimeout(() => {
|
|
4587
4604
|
this.retryTimerRunning = false;
|
|
4588
|
-
//console.debug("Upload retry timer
|
|
4605
|
+
//console.debug("Upload retry timer expired. Continue processing...")
|
|
4589
4606
|
this.process();
|
|
4590
4607
|
}, this.RETRY_DELAY);
|
|
4591
4608
|
this.retryTimerRunning = true;
|
|
@@ -4669,9 +4686,9 @@ class SpeechRecorderConfig {
|
|
|
4669
4686
|
this.withCredentials = false;
|
|
4670
4687
|
}
|
|
4671
4688
|
}
|
|
4672
|
-
SpeechRecorderConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4673
|
-
SpeechRecorderConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
4674
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4689
|
+
SpeechRecorderConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechRecorderConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4690
|
+
SpeechRecorderConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechRecorderConfig });
|
|
4691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechRecorderConfig, decorators: [{
|
|
4675
4692
|
type: Injectable
|
|
4676
4693
|
}], ctorParameters: function () { return []; } });
|
|
4677
4694
|
|
|
@@ -4679,12 +4696,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
4679
4696
|
* Created by klausj on 17.06.2017.
|
|
4680
4697
|
*/
|
|
4681
4698
|
class ProjectService {
|
|
4682
|
-
constructor(http,
|
|
4699
|
+
constructor(http, platformLocation, config) {
|
|
4683
4700
|
this.http = http;
|
|
4684
|
-
this.
|
|
4701
|
+
this.platformLocation = platformLocation;
|
|
4685
4702
|
this.config = config;
|
|
4686
4703
|
this.withCredentials = false;
|
|
4687
|
-
console.log("Base Href: " +
|
|
4704
|
+
console.log("Base Href: " + platformLocation.getBaseHrefFromDOM());
|
|
4688
4705
|
let apiEndPoint = '';
|
|
4689
4706
|
if (config && config.apiEndPoint) {
|
|
4690
4707
|
apiEndPoint = config.apiEndPoint;
|
|
@@ -4723,9 +4740,9 @@ class ProjectService {
|
|
|
4723
4740
|
}
|
|
4724
4741
|
}
|
|
4725
4742
|
ProjectService.PROJECT_API_CTX = 'project';
|
|
4726
|
-
ProjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4727
|
-
ProjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
4728
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4743
|
+
ProjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ProjectService, deps: [{ token: i1.HttpClient }, { token: i1$1.PlatformLocation }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4744
|
+
ProjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ProjectService });
|
|
4745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ProjectService, decorators: [{
|
|
4729
4746
|
type: Injectable
|
|
4730
4747
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.PlatformLocation }, { type: SpeechRecorderConfig, decorators: [{
|
|
4731
4748
|
type: Inject,
|
|
@@ -4767,23 +4784,26 @@ class SessionService {
|
|
|
4767
4784
|
let wrapObs = new Observable(subscriber => {
|
|
4768
4785
|
this._uploadCount++;
|
|
4769
4786
|
let obs = this.http.patch(sesssUrl, body, { withCredentials: this.withCredentials });
|
|
4770
|
-
obs.subscribe(
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4787
|
+
obs.subscribe({
|
|
4788
|
+
next: (value) => {
|
|
4789
|
+
subscriber.next(value);
|
|
4790
|
+
},
|
|
4791
|
+
error: error => {
|
|
4792
|
+
this._uploadCount--;
|
|
4793
|
+
subscriber.error(error);
|
|
4794
|
+
}, complete: () => {
|
|
4795
|
+
this._uploadCount--;
|
|
4796
|
+
subscriber.complete();
|
|
4797
|
+
}
|
|
4778
4798
|
});
|
|
4779
4799
|
});
|
|
4780
4800
|
return wrapObs;
|
|
4781
4801
|
}
|
|
4782
4802
|
}
|
|
4783
4803
|
SessionService.SESSION_API_CTX = 'session';
|
|
4784
|
-
SessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4785
|
-
SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
4786
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4804
|
+
SessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4805
|
+
SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionService });
|
|
4806
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionService, decorators: [{
|
|
4787
4807
|
type: Injectable
|
|
4788
4808
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
4789
4809
|
type: Inject,
|
|
@@ -4822,8 +4842,8 @@ class SimpleTrafficLight {
|
|
|
4822
4842
|
}
|
|
4823
4843
|
}
|
|
4824
4844
|
}
|
|
4825
|
-
SimpleTrafficLight.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4826
|
-
SimpleTrafficLight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
4845
|
+
SimpleTrafficLight.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SimpleTrafficLight, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4846
|
+
SimpleTrafficLight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: { status: "status" }, ngImport: i0, template: `
|
|
4827
4847
|
|
|
4828
4848
|
<div>
|
|
4829
4849
|
<div class="circle {{lighttop}}"></div>
|
|
@@ -4831,7 +4851,7 @@ SimpleTrafficLight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
4831
4851
|
<div class="circle {{lightbottom}}"></div>
|
|
4832
4852
|
</div>
|
|
4833
4853
|
`, isInline: true, styles: [".circle{width:50px;height:50px;border-radius:50%;margin:5px;background:grey}\n", ".red{background:red}\n", ".yellow{background:yellow}\n", ".green{background:green}\n", ".black{background:black}\n", ":host{display:flex;flex-direction:column;background:black;padding:2px;height:170px;max-height:170px;flex:0 0 content}\n"] });
|
|
4834
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4854
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SimpleTrafficLight, decorators: [{
|
|
4835
4855
|
type: Component,
|
|
4836
4856
|
args: [{ selector: 'app-simpletrafficlight', template: `
|
|
4837
4857
|
|
|
@@ -4902,9 +4922,9 @@ class CanvasLayerComponent {
|
|
|
4902
4922
|
}
|
|
4903
4923
|
}
|
|
4904
4924
|
}
|
|
4905
|
-
CanvasLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4906
|
-
CanvasLayerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
4907
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4925
|
+
CanvasLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CanvasLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4926
|
+
CanvasLayerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: CanvasLayerComponent, ngImport: i0 });
|
|
4927
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CanvasLayerComponent, decorators: [{
|
|
4908
4928
|
type: Directive
|
|
4909
4929
|
}], ctorParameters: function () { return []; } });
|
|
4910
4930
|
|
|
@@ -5144,9 +5164,9 @@ class BasicAudioCanvasLayerComponent extends CanvasLayerComponent {
|
|
|
5144
5164
|
}
|
|
5145
5165
|
}
|
|
5146
5166
|
}
|
|
5147
|
-
BasicAudioCanvasLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
5148
|
-
BasicAudioCanvasLayerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
5149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
5167
|
+
BasicAudioCanvasLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BasicAudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
5168
|
+
BasicAudioCanvasLayerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: BasicAudioCanvasLayerComponent, usesInheritance: true, ngImport: i0 });
|
|
5169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BasicAudioCanvasLayerComponent, decorators: [{
|
|
5150
5170
|
type: Directive
|
|
5151
5171
|
}] });
|
|
5152
5172
|
class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
|
|
@@ -5323,9 +5343,9 @@ class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
|
|
|
5323
5343
|
}
|
|
5324
5344
|
}
|
|
5325
5345
|
AudioCanvasLayerComponent.ENABLE_STREAMING_NUMBER_OF_SAMPLES_THRESHOLD = 10 * 60 * 48000; // Use streaming/chunking if audio clip has more than this number of samples
|
|
5326
|
-
AudioCanvasLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
5327
|
-
AudioCanvasLayerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
5328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
5346
|
+
AudioCanvasLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
5347
|
+
AudioCanvasLayerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: AudioCanvasLayerComponent, 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 });
|
|
5348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioCanvasLayerComponent, decorators: [{
|
|
5329
5349
|
type: Directive
|
|
5330
5350
|
}], propDecorators: { bgCanvasRef: [{
|
|
5331
5351
|
type: ViewChild,
|
|
@@ -5855,14 +5875,14 @@ class AudioSignal extends AudioCanvasLayerComponent {
|
|
|
5855
5875
|
this.playFramePosition = 0;
|
|
5856
5876
|
}
|
|
5857
5877
|
}
|
|
5858
|
-
AudioSignal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
5859
|
-
AudioSignal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
5878
|
+
AudioSignal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioSignal, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
5879
|
+
AudioSignal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioSignal, 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: `
|
|
5860
5880
|
<canvas #bg height="10"></canvas>
|
|
5861
5881
|
<canvas #audioSignal height="10"></canvas>
|
|
5862
5882
|
<canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
|
|
5863
5883
|
(mouseleave)="updateCursorCanvas($event, false)"></canvas>
|
|
5864
5884
|
<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"] });
|
|
5865
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
5885
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioSignal, decorators: [{
|
|
5866
5886
|
type: Component,
|
|
5867
5887
|
args: [{ selector: 'audio-signal', template: `
|
|
5868
5888
|
<canvas #bg height="10"></canvas>
|
|
@@ -7001,14 +7021,14 @@ class Sonagram extends AudioCanvasLayerComponent {
|
|
|
7001
7021
|
this.playFramePosition = 0;
|
|
7002
7022
|
}
|
|
7003
7023
|
}
|
|
7004
|
-
Sonagram.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7005
|
-
Sonagram.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
7024
|
+
Sonagram.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Sonagram, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
7025
|
+
Sonagram.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Sonagram, 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: `
|
|
7006
7026
|
<canvas #sonagram height="10"></canvas>
|
|
7007
7027
|
<canvas #bg height="10"></canvas>
|
|
7008
7028
|
<canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
|
|
7009
7029
|
(mouseleave)="updateCursorCanvas($event, false)"></canvas>
|
|
7010
7030
|
<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"] });
|
|
7011
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7031
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Sonagram, decorators: [{
|
|
7012
7032
|
type: Component,
|
|
7013
7033
|
args: [{ selector: 'audio-sonagram', template: `
|
|
7014
7034
|
<canvas #sonagram height="10"></canvas>
|
|
@@ -7380,16 +7400,16 @@ class AudioClipUIContainer extends BasicAudioCanvasLayerComponent {
|
|
|
7380
7400
|
}
|
|
7381
7401
|
}
|
|
7382
7402
|
AudioClipUIContainer.DIVIDER_PIXEL_SIZE = 10;
|
|
7383
|
-
AudioClipUIContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7384
|
-
AudioClipUIContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
7403
|
+
AudioClipUIContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioClipUIContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
7404
|
+
AudioClipUIContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioClipUIContainer, 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: `
|
|
7385
7405
|
<div #virtualCanvas>
|
|
7386
7406
|
<canvas #divider (mousedown)="mousedown($event)" (mouseover)="mouseover($event)"
|
|
7387
7407
|
(mouseleave)="mouseleave($event)" height="10"></canvas>
|
|
7388
7408
|
<audio-signal [pointerPosition]="pointer" [selecting]="selecting" [selection]="selection" (pointerPositionEventEmitter)="pointerPositionChanged($event)" (selectingEventEmitter)="selectingChanged($event)" (selectedEventEmitter)="selectionChanged($event)"></audio-signal>
|
|
7389
7409
|
<audio-sonagram [pointerPosition]="pointer" [selecting]="selecting" [selection]="selection" (pointerPositionEventEmitter)="pointerPositionChanged($event)" (selectingEventEmitter)="selectingChanged($event)" (selectedEventEmitter)="selectionChanged($event)"></audio-sonagram>
|
|
7390
7410
|
</div>
|
|
7391
|
-
`, 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;
|
|
7392
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7411
|
+
`, 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" }] });
|
|
7412
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioClipUIContainer, decorators: [{
|
|
7393
7413
|
type: Component,
|
|
7394
7414
|
args: [{ selector: 'app-audio', template: `
|
|
7395
7415
|
<div #virtualCanvas>
|
|
@@ -7398,7 +7418,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
7398
7418
|
<audio-signal [pointerPosition]="pointer" [selecting]="selecting" [selection]="selection" (pointerPositionEventEmitter)="pointerPositionChanged($event)" (selectingEventEmitter)="selectingChanged($event)" (selectedEventEmitter)="selectionChanged($event)"></audio-signal>
|
|
7399
7419
|
<audio-sonagram [pointerPosition]="pointer" [selecting]="selecting" [selection]="selection" (pointerPositionEventEmitter)="pointerPositionChanged($event)" (selectingEventEmitter)="selectingChanged($event)" (selectedEventEmitter)="selectionChanged($event)"></audio-sonagram>
|
|
7400
7420
|
</div>
|
|
7401
|
-
`, 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;
|
|
7421
|
+
`, 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"] }]
|
|
7402
7422
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { canvasRef: [{
|
|
7403
7423
|
type: ViewChild,
|
|
7404
7424
|
args: ['divider', { static: true }]
|
|
@@ -7534,13 +7554,13 @@ class AudioDisplayScrollPane {
|
|
|
7534
7554
|
this.ac.playFramePosition = framePos;
|
|
7535
7555
|
}
|
|
7536
7556
|
}
|
|
7537
|
-
AudioDisplayScrollPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7538
|
-
AudioDisplayScrollPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
7557
|
+
AudioDisplayScrollPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplayScrollPane, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
7558
|
+
AudioDisplayScrollPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioDisplayScrollPane, 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: `
|
|
7539
7559
|
|
|
7540
7560
|
<app-audio #audioSignalContainer (selectionEventEmitter)="selectionChanged($event)"></app-audio>
|
|
7541
7561
|
|
|
7542
7562
|
`, isInline: true, styles: [":host{flex:2;width:100%;background:darkgray;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"] }] });
|
|
7543
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplayScrollPane, decorators: [{
|
|
7544
7564
|
type: Component,
|
|
7545
7565
|
args: [{ selector: 'audio-display-scroll-pane', template: `
|
|
7546
7566
|
|
|
@@ -7597,8 +7617,8 @@ class AudioDisplayControl {
|
|
|
7597
7617
|
this.status = 'ERROR';
|
|
7598
7618
|
}
|
|
7599
7619
|
}
|
|
7600
|
-
AudioDisplayControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7601
|
-
AudioDisplayControl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
7620
|
+
AudioDisplayControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplayControl, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7621
|
+
AudioDisplayControl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioDisplayControl, 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: `
|
|
7602
7622
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
7603
7623
|
<fieldset>
|
|
7604
7624
|
|
|
@@ -7642,7 +7662,7 @@ AudioDisplayControl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
7642
7662
|
|
|
7643
7663
|
</fieldset>
|
|
7644
7664
|
</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]", exportAs: ["matTooltip"] }, { kind: "component", type: i4$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
|
|
7645
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7665
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplayControl, decorators: [{
|
|
7646
7666
|
type: Component,
|
|
7647
7667
|
args: [{ selector: 'audio-display-control', template: `
|
|
7648
7668
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
@@ -7712,8 +7732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
7712
7732
|
}] } });
|
|
7713
7733
|
|
|
7714
7734
|
class AudioDisplay {
|
|
7715
|
-
constructor(
|
|
7716
|
-
this.route = route;
|
|
7735
|
+
constructor(ref, eRef) {
|
|
7717
7736
|
this.ref = ref;
|
|
7718
7737
|
this.eRef = eRef;
|
|
7719
7738
|
this._audioClip = null;
|
|
@@ -7776,8 +7795,8 @@ class AudioDisplay {
|
|
|
7776
7795
|
this.status = 'ERROR';
|
|
7777
7796
|
}
|
|
7778
7797
|
}
|
|
7779
|
-
AudioDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7780
|
-
AudioDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
7798
|
+
AudioDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplay, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
7799
|
+
AudioDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioDisplay, 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: `
|
|
7781
7800
|
|
|
7782
7801
|
<audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
|
|
7783
7802
|
|
|
@@ -7791,7 +7810,7 @@ AudioDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
7791
7810
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
7792
7811
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
7793
7812
|
`, 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"] }] });
|
|
7794
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7813
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplay, decorators: [{
|
|
7795
7814
|
type: Component,
|
|
7796
7815
|
args: [{ selector: 'app-audiodisplay', template: `
|
|
7797
7816
|
|
|
@@ -7807,7 +7826,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
7807
7826
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
7808
7827
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
7809
7828
|
`, 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"] }]
|
|
7810
|
-
}], ctorParameters: function () { return [{ type:
|
|
7829
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { playStartAction: [{
|
|
7811
7830
|
type: Input
|
|
7812
7831
|
}], playStopAction: [{
|
|
7813
7832
|
type: Input
|
|
@@ -7838,11 +7857,11 @@ class ResponsiveComponent {
|
|
|
7838
7857
|
});
|
|
7839
7858
|
}
|
|
7840
7859
|
}
|
|
7841
|
-
ResponsiveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7842
|
-
ResponsiveComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
7843
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7860
|
+
ResponsiveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ResponsiveComponent, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Directive });
|
|
7861
|
+
ResponsiveComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ResponsiveComponent, ngImport: i0 });
|
|
7862
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ResponsiveComponent, decorators: [{
|
|
7844
7863
|
type: Directive
|
|
7845
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
7864
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }]; } });
|
|
7846
7865
|
|
|
7847
7866
|
class ScrollIntoViewDirective {
|
|
7848
7867
|
constructor(elRef) {
|
|
@@ -7854,9 +7873,9 @@ class ScrollIntoViewDirective {
|
|
|
7854
7873
|
}
|
|
7855
7874
|
}
|
|
7856
7875
|
}
|
|
7857
|
-
ScrollIntoViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7858
|
-
ScrollIntoViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
7859
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7876
|
+
ScrollIntoViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScrollIntoViewDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
7877
|
+
ScrollIntoViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: { scrollIntoViewToBottom: "scrollIntoViewToBottom" }, ngImport: i0 });
|
|
7878
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScrollIntoViewDirective, decorators: [{
|
|
7860
7879
|
type: Directive,
|
|
7861
7880
|
args: [{
|
|
7862
7881
|
selector: "[scrollIntoViewToBottom]"
|
|
@@ -7903,8 +7922,8 @@ class Progress {
|
|
|
7903
7922
|
return cached;
|
|
7904
7923
|
}
|
|
7905
7924
|
}
|
|
7906
|
-
Progress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
7907
|
-
Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
7925
|
+
Progress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Progress, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7926
|
+
Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Progress, 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: `
|
|
7908
7927
|
|
|
7909
7928
|
<table class="mat-typography">
|
|
7910
7929
|
<thead>
|
|
@@ -7933,7 +7952,7 @@ Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
|
7933
7952
|
</tbody>
|
|
7934
7953
|
</table>
|
|
7935
7954
|
`, isInline: true, styles: [":host{overflow-x:hidden;overflow-y:scroll;padding:10pt;flex:.1 0 content;background:white;min-height:1px}\n", "table{min-height:1px;border-collapse:collapse}table,th,td{border:1px solid lightgrey;padding:.5em}\n", ".selRow{background:lightblue}\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: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }] });
|
|
7936
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
7955
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Progress, decorators: [{
|
|
7937
7956
|
type: Component,
|
|
7938
7957
|
args: [{ selector: 'app-sprprogress', template: `
|
|
7939
7958
|
|
|
@@ -7996,12 +8015,12 @@ class Recinstructions {
|
|
|
7996
8015
|
return riTxt;
|
|
7997
8016
|
}
|
|
7998
8017
|
}
|
|
7999
|
-
Recinstructions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
8000
|
-
Recinstructions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
8018
|
+
Recinstructions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Recinstructions, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8019
|
+
Recinstructions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Recinstructions, selector: "spr-recinstructions", inputs: { recinstructions: "recinstructions", selectedItemIdx: "selectedItemIdx", itemCount: "itemCount" }, ngImport: i0, template: `
|
|
8001
8020
|
|
|
8002
8021
|
{{displayText()}}
|
|
8003
8022
|
`, isInline: true, styles: [":host{justify-content:left;align-items:flex-start;background:white;text-align:left;font-size:1em;flex:0;width:100%}\n"] });
|
|
8004
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
8023
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Recinstructions, decorators: [{
|
|
8005
8024
|
type: Component,
|
|
8006
8025
|
args: [{ selector: 'spr-recinstructions', template: `
|
|
8007
8026
|
|
|
@@ -8175,13 +8194,13 @@ class Prompter {
|
|
|
8175
8194
|
}
|
|
8176
8195
|
}
|
|
8177
8196
|
}
|
|
8178
|
-
Prompter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
8179
|
-
Prompter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
8197
|
+
Prompter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompter, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ProjectService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8198
|
+
Prompter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Prompter, selector: "app-sprprompter", inputs: { projectName: "projectName", prompterHeight: "prompterHeight", promptMediaItems: "promptMediaItems" }, host: { properties: { "class.fill": "this.prompterStyleFill" } }, ngImport: i0, template: `
|
|
8180
8199
|
|
|
8181
8200
|
<!--<ng-template [ngIf]="text">{{text}}</ng-template>-->
|
|
8182
8201
|
<!-- <img *ngIf="src" #promptImage [src]="srcUrl()" [height]="prompterHeight-20" /> -->
|
|
8183
8202
|
`, isInline: true, styles: [":host{justify-content:center;align-items:center;background:white;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"] });
|
|
8184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
8203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompter, decorators: [{
|
|
8185
8204
|
type: Component,
|
|
8186
8205
|
args: [{ selector: 'app-sprprompter', template: `
|
|
8187
8206
|
|
|
@@ -8329,11 +8348,11 @@ class PromptContainer {
|
|
|
8329
8348
|
}
|
|
8330
8349
|
}
|
|
8331
8350
|
}
|
|
8332
|
-
PromptContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
8333
|
-
PromptContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
8351
|
+
PromptContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PromptContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8352
|
+
PromptContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PromptContainer, 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: `
|
|
8334
8353
|
<app-sprprompter #prompter [projectName]="projectName" [promptMediaItems]="mediaitems" [style.font-size]="fontSize+'px'" [style.visibility]="prDisplay" [prompterHeight]="prompterHeight"></app-sprprompter>
|
|
8335
8354
|
`, isInline: true, styles: [":host{flex:3;padding:10pt;height:100%;max-height:100%;justify-content:center;align-items:center;background:white;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"] }] });
|
|
8336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
8355
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PromptContainer, decorators: [{
|
|
8337
8356
|
type: Component,
|
|
8338
8357
|
args: [{ selector: 'app-sprpromptcontainer', template: `
|
|
8339
8358
|
<app-sprprompter #prompter [projectName]="projectName" [promptMediaItems]="mediaitems" [style.font-size]="fontSize+'px'" [style.visibility]="prDisplay" [prompterHeight]="prompterHeight"></app-sprprompter>
|
|
@@ -8456,15 +8475,15 @@ class PromptingContainer {
|
|
|
8456
8475
|
//ev.preventDefault();
|
|
8457
8476
|
}
|
|
8458
8477
|
}
|
|
8459
|
-
PromptingContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
8460
|
-
PromptingContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
8478
|
+
PromptingContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PromptingContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8479
|
+
PromptingContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PromptingContainer, 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: `
|
|
8461
8480
|
<spr-recinstructions [selectedItemIdx]="selectedItemIdx" [itemCount]="itemCount"
|
|
8462
8481
|
[recinstructions]="promptItem?.recinstructions?.recinstructions"></spr-recinstructions>
|
|
8463
8482
|
<app-sprpromptcontainer [projectName]="projectName"
|
|
8464
8483
|
[mediaitems]="showPrompt?(promptItem?promptItem.mediaitems:null):null"></app-sprpromptcontainer>
|
|
8465
8484
|
|
|
8466
8485
|
`, isInline: true, styles: [":host{position:relative;flex:3;padding:10pt;justify-content:center;align-items:center;background:white;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"] }] });
|
|
8467
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
8486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PromptingContainer, decorators: [{
|
|
8468
8487
|
type: Component,
|
|
8469
8488
|
args: [{ selector: 'app-sprpromptingcontainer', template: `
|
|
8470
8489
|
<spr-recinstructions [selectedItemIdx]="selectedItemIdx" [itemCount]="itemCount"
|
|
@@ -8522,8 +8541,8 @@ class Prompting extends ResponsiveComponent {
|
|
|
8522
8541
|
this.onPrevItem.emit();
|
|
8523
8542
|
}
|
|
8524
8543
|
}
|
|
8525
|
-
Prompting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
8526
|
-
Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
8544
|
+
Prompting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
8545
|
+
Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Prompting, 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: `
|
|
8527
8546
|
|
|
8528
8547
|
<app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
|
|
8529
8548
|
<app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
|
|
@@ -8546,7 +8565,7 @@ Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14
|
|
|
8546
8565
|
|
|
8547
8566
|
|
|
8548
8567
|
`, isInline: true, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;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"] }] });
|
|
8549
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
8568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, decorators: [{
|
|
8550
8569
|
type: Component,
|
|
8551
8570
|
args: [{ selector: 'app-sprprompting', template: `
|
|
8552
8571
|
|
|
@@ -8571,7 +8590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
8571
8590
|
|
|
8572
8591
|
|
|
8573
8592
|
`, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;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"] }]
|
|
8574
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
8593
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }]; }, propDecorators: { simpleTrafficLight: [{
|
|
8575
8594
|
type: ViewChild,
|
|
8576
8595
|
args: [SimpleTrafficLight, { static: true }]
|
|
8577
8596
|
}], audioDisplay: [{
|
|
@@ -8622,8 +8641,8 @@ class SessionFinishedDialog {
|
|
|
8622
8641
|
this.dialogRef.close();
|
|
8623
8642
|
}
|
|
8624
8643
|
}
|
|
8625
|
-
SessionFinishedDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
8626
|
-
SessionFinishedDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
8644
|
+
SessionFinishedDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionFinishedDialog, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
8645
|
+
SessionFinishedDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SessionFinishedDialog, selector: "spr-session-finished-dialog", ngImport: i0, template: `<h1 mat-dialog-title><mat-icon [style.color]="'green'">done_all</mat-icon> Session finished</h1>
|
|
8627
8646
|
<div mat-dialog-content>
|
|
8628
8647
|
|
|
8629
8648
|
<p>Thank you! The recording session is complete.</p>
|
|
@@ -8632,8 +8651,8 @@ SessionFinishedDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
8632
8651
|
<div mat-dialog-actions>
|
|
8633
8652
|
<button mat-button (click)="closeDialog()">OK</button>
|
|
8634
8653
|
</div>
|
|
8635
|
-
`, 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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$
|
|
8636
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
8654
|
+
`, 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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
|
|
8655
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionFinishedDialog, decorators: [{
|
|
8637
8656
|
type: Component,
|
|
8638
8657
|
args: [{
|
|
8639
8658
|
selector: 'spr-session-finished-dialog',
|
|
@@ -8648,7 +8667,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
8648
8667
|
</div>
|
|
8649
8668
|
`
|
|
8650
8669
|
}]
|
|
8651
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
8670
|
+
}], ctorParameters: function () { return [{ type: i1$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
8652
8671
|
type: Inject,
|
|
8653
8672
|
args: [MAT_DIALOG_DATA]
|
|
8654
8673
|
}] }]; } });
|
|
@@ -8662,8 +8681,8 @@ class MessageDialog {
|
|
|
8662
8681
|
this.dialogRef.close();
|
|
8663
8682
|
}
|
|
8664
8683
|
}
|
|
8665
|
-
MessageDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
8666
|
-
MessageDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
8684
|
+
MessageDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MessageDialog, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
8685
|
+
MessageDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: MessageDialog, selector: "msg-dialog", ngImport: i0, template: `<h1 mat-dialog-title><mat-icon *ngIf="data.type==='error'" [style.color]="'red'">error</mat-icon>
|
|
8667
8686
|
<mat-icon *ngIf="data.type==='warning'" [style.color]="'yellow'">warning</mat-icon>{{data.title}}</h1>
|
|
8668
8687
|
<div mat-dialog-content>
|
|
8669
8688
|
|
|
@@ -8674,8 +8693,8 @@ MessageDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
8674
8693
|
<div mat-dialog-actions>
|
|
8675
8694
|
<button mat-button (click)="closeDialog()">OK</button>
|
|
8676
8695
|
</div>
|
|
8677
|
-
`, 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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$
|
|
8678
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
8696
|
+
`, 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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
|
|
8697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MessageDialog, decorators: [{
|
|
8679
8698
|
type: Component,
|
|
8680
8699
|
args: [{
|
|
8681
8700
|
selector: 'msg-dialog',
|
|
@@ -8692,7 +8711,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
8692
8711
|
</div>
|
|
8693
8712
|
`
|
|
8694
8713
|
}]
|
|
8695
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
8714
|
+
}], ctorParameters: function () { return [{ type: i1$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
8696
8715
|
type: Inject,
|
|
8697
8716
|
args: [MAT_DIALOG_DATA]
|
|
8698
8717
|
}] }]; } });
|
|
@@ -8993,62 +9012,64 @@ let BasicRecordingService = class BasicRecordingService {
|
|
|
8993
9012
|
ausps.set('requestUUID', UUID.generate());
|
|
8994
9013
|
}
|
|
8995
9014
|
let obs = new Observable(observer => {
|
|
8996
|
-
this.audioRequestByURL(baseAudioUrl, ausps).subscribe(
|
|
8997
|
-
|
|
8998
|
-
|
|
8999
|
-
|
|
9000
|
-
|
|
9001
|
-
|
|
9002
|
-
|
|
9003
|
-
|
|
9004
|
-
|
|
9005
|
-
|
|
9006
|
-
|
|
9007
|
-
|
|
9008
|
-
|
|
9009
|
-
|
|
9010
|
-
|
|
9011
|
-
|
|
9012
|
-
|
|
9013
|
-
|
|
9014
|
-
|
|
9015
|
-
|
|
9016
|
-
|
|
9017
|
-
|
|
9018
|
-
|
|
9019
|
-
|
|
9020
|
-
|
|
9021
|
-
|
|
9022
|
-
|
|
9023
|
-
|
|
9024
|
-
|
|
9025
|
-
|
|
9026
|
-
|
|
9027
|
-
|
|
9028
|
-
|
|
9029
|
-
|
|
9030
|
-
|
|
9031
|
-
|
|
9032
|
-
|
|
9033
|
-
|
|
9015
|
+
this.audioRequestByURL(baseAudioUrl, ausps).subscribe({
|
|
9016
|
+
next: resp => {
|
|
9017
|
+
// Do not use Promise version, which does not work with Safari 13 (13.0.5)
|
|
9018
|
+
if (resp.body) {
|
|
9019
|
+
//console.debug("chunkAudioRequest: observer.closed: "+observer.closed);
|
|
9020
|
+
//console.debug("Audio file bytes: "+resp.body.byteLength);
|
|
9021
|
+
// Check original audio format
|
|
9022
|
+
let wr = new WavReader(resp.body);
|
|
9023
|
+
const pcmFmt = wr.readFormat();
|
|
9024
|
+
const orgFl = wr.frameLength();
|
|
9025
|
+
// if(pcmFmt){
|
|
9026
|
+
// console.debug("Original WAVE format of download chunk: "+pcmFmt);
|
|
9027
|
+
// }else{
|
|
9028
|
+
// console.error("Could not read WAVE format of original download chunk!");
|
|
9029
|
+
// }
|
|
9030
|
+
// if(orgFl){
|
|
9031
|
+
// console.debug("Original frame length of download chunk: "+orgFl);
|
|
9032
|
+
// }else{
|
|
9033
|
+
// console.error("Could not read WAVE format of original download chunk!");
|
|
9034
|
+
// }
|
|
9035
|
+
if (pcmFmt && orgFl) {
|
|
9036
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
9037
|
+
//console.debug("Decoded audio chunk frames: "+ab.length);
|
|
9038
|
+
let chDl = new ChunkDownload(pcmFmt, orgFl, ab);
|
|
9039
|
+
observer.next(chDl);
|
|
9040
|
+
observer.complete();
|
|
9041
|
+
}, error => {
|
|
9042
|
+
//if(error instanceof HttpErrorResponse) {
|
|
9043
|
+
// if (error.status == 404) {
|
|
9044
|
+
// // Interpret not as an error, the file ist not recorded yet
|
|
9045
|
+
// observer.next(null);
|
|
9046
|
+
// observer.complete()
|
|
9047
|
+
// } else {
|
|
9048
|
+
// // all other states are errors
|
|
9049
|
+
console.error("Recordings service chunkAudioRequest error decoding audio data: " + error.name + ": " + error.message);
|
|
9050
|
+
observer.error(error);
|
|
9051
|
+
// }
|
|
9052
|
+
// }
|
|
9053
|
+
});
|
|
9054
|
+
}
|
|
9055
|
+
else {
|
|
9056
|
+
const errMsg = 'Could not parse audio header for format and/or frame length of download.';
|
|
9057
|
+
console.error(errMsg);
|
|
9058
|
+
observer.error(errMsg);
|
|
9059
|
+
}
|
|
9034
9060
|
}
|
|
9035
9061
|
else {
|
|
9036
|
-
const errMsg = '
|
|
9062
|
+
const errMsg = 'Fetching audio file: response has no body';
|
|
9037
9063
|
console.error(errMsg);
|
|
9038
9064
|
observer.error(errMsg);
|
|
9039
9065
|
}
|
|
9066
|
+
}, error: (error) => {
|
|
9067
|
+
// all other states are errors
|
|
9068
|
+
//const errMsg='Fetching audio file HTTP error: '+error;
|
|
9069
|
+
//console.error(errMsg);
|
|
9070
|
+
observer.error(error);
|
|
9071
|
+
//observer.complete();
|
|
9040
9072
|
}
|
|
9041
|
-
else {
|
|
9042
|
-
const errMsg = 'Fetching audio file: response has no body';
|
|
9043
|
-
console.error(errMsg);
|
|
9044
|
-
observer.error(errMsg);
|
|
9045
|
-
}
|
|
9046
|
-
}, (error) => {
|
|
9047
|
-
// all other states are errors
|
|
9048
|
-
//const errMsg='Fetching audio file HTTP error: '+error;
|
|
9049
|
-
//console.error(errMsg);
|
|
9050
|
-
observer.error(error);
|
|
9051
|
-
//observer.complete();
|
|
9052
9073
|
});
|
|
9053
9074
|
});
|
|
9054
9075
|
return obs;
|
|
@@ -9618,36 +9639,38 @@ class RecordingService extends BasicRecordingService {
|
|
|
9618
9639
|
}
|
|
9619
9640
|
if (recordingFile.session && recFileId) {
|
|
9620
9641
|
let obs = this.fetchAudiofile(projectName, recordingFile.session, recFileId);
|
|
9621
|
-
obs.subscribe(
|
|
9622
|
-
|
|
9623
|
-
|
|
9624
|
-
|
|
9625
|
-
|
|
9626
|
-
|
|
9627
|
-
|
|
9628
|
-
|
|
9629
|
-
|
|
9630
|
-
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
|
|
9634
|
-
|
|
9635
|
-
|
|
9636
|
-
|
|
9637
|
-
if (err
|
|
9638
|
-
|
|
9639
|
-
|
|
9640
|
-
|
|
9642
|
+
obs.subscribe({
|
|
9643
|
+
next: resp => {
|
|
9644
|
+
// Do not use Promise version, which does not work with Safari 13 (13.0.5)
|
|
9645
|
+
if (resp.body) {
|
|
9646
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
9647
|
+
observer.next(ab);
|
|
9648
|
+
observer.complete();
|
|
9649
|
+
}, error => {
|
|
9650
|
+
observer.error(error);
|
|
9651
|
+
observer.complete();
|
|
9652
|
+
});
|
|
9653
|
+
}
|
|
9654
|
+
else {
|
|
9655
|
+
observer.error('Fetching audio file: response has no body');
|
|
9656
|
+
}
|
|
9657
|
+
}, error: (err) => {
|
|
9658
|
+
if (err instanceof HttpErrorResponse) {
|
|
9659
|
+
if (err.status == 404) {
|
|
9660
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
9661
|
+
observer.next(null);
|
|
9662
|
+
observer.complete();
|
|
9663
|
+
}
|
|
9664
|
+
else {
|
|
9665
|
+
// all other states are errors
|
|
9666
|
+
observer.error(err);
|
|
9667
|
+
observer.complete();
|
|
9668
|
+
}
|
|
9641
9669
|
}
|
|
9642
9670
|
else {
|
|
9643
|
-
// all other states are errors
|
|
9644
9671
|
observer.error(err);
|
|
9645
|
-
observer.complete();
|
|
9646
9672
|
}
|
|
9647
9673
|
}
|
|
9648
|
-
else {
|
|
9649
|
-
observer.error(err);
|
|
9650
|
-
}
|
|
9651
9674
|
});
|
|
9652
9675
|
}
|
|
9653
9676
|
else {
|
|
@@ -9664,49 +9687,50 @@ class RecordingService extends BasicRecordingService {
|
|
|
9664
9687
|
}
|
|
9665
9688
|
if (recordingFile.session && recFileId) {
|
|
9666
9689
|
let obs = this.fetchAudiofile(projectName, recordingFile.session, recFileId);
|
|
9667
|
-
obs.subscribe(resp => {
|
|
9668
|
-
|
|
9669
|
-
|
|
9670
|
-
|
|
9671
|
-
|
|
9672
|
-
|
|
9673
|
-
|
|
9674
|
-
|
|
9675
|
-
|
|
9676
|
-
|
|
9690
|
+
obs.subscribe({ next: resp => {
|
|
9691
|
+
//console.log("Fetched audio file. HTTP response status: "+resp.status+", type: "+resp.type+", byte length: "+ resp.body.byteLength);
|
|
9692
|
+
// Do not use Promise version, which does not work with Safari 13 (13.0.5)
|
|
9693
|
+
if (resp.body) {
|
|
9694
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
9695
|
+
let abs = new AudioBufferSource(ab);
|
|
9696
|
+
let adh = new AudioDataHolder(abs);
|
|
9697
|
+
RecordingFileUtils.setAudioData(recordingFile, adh);
|
|
9698
|
+
if (this.debugDelay > 0) {
|
|
9699
|
+
window.setTimeout(() => {
|
|
9700
|
+
observer.next(recordingFile);
|
|
9701
|
+
observer.complete();
|
|
9702
|
+
}, this.debugDelay);
|
|
9703
|
+
}
|
|
9704
|
+
else {
|
|
9677
9705
|
observer.next(recordingFile);
|
|
9678
9706
|
observer.complete();
|
|
9679
|
-
}
|
|
9707
|
+
}
|
|
9708
|
+
}, error => {
|
|
9709
|
+
observer.error(error);
|
|
9710
|
+
observer.complete();
|
|
9711
|
+
});
|
|
9712
|
+
}
|
|
9713
|
+
else {
|
|
9714
|
+
observer.error('Fetching audio file: response has no body');
|
|
9715
|
+
}
|
|
9716
|
+
},
|
|
9717
|
+
error: (err) => {
|
|
9718
|
+
if (err instanceof HttpErrorResponse) {
|
|
9719
|
+
if (err.status == 404) {
|
|
9720
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
9721
|
+
observer.next(null);
|
|
9722
|
+
observer.complete();
|
|
9680
9723
|
}
|
|
9681
9724
|
else {
|
|
9682
|
-
|
|
9725
|
+
// all other states are errors
|
|
9726
|
+
observer.error(err);
|
|
9683
9727
|
observer.complete();
|
|
9684
9728
|
}
|
|
9685
|
-
}, error => {
|
|
9686
|
-
observer.error(error);
|
|
9687
|
-
observer.complete();
|
|
9688
|
-
});
|
|
9689
|
-
}
|
|
9690
|
-
else {
|
|
9691
|
-
observer.error('Fetching audio file: response has no body');
|
|
9692
|
-
}
|
|
9693
|
-
}, (err) => {
|
|
9694
|
-
if (err instanceof HttpErrorResponse) {
|
|
9695
|
-
if (err.status == 404) {
|
|
9696
|
-
// Interpret not as an error, the file ist not recorded yet
|
|
9697
|
-
observer.next(null);
|
|
9698
|
-
observer.complete();
|
|
9699
9729
|
}
|
|
9700
9730
|
else {
|
|
9701
|
-
// all other states are errors
|
|
9702
9731
|
observer.error(err);
|
|
9703
|
-
observer.complete();
|
|
9704
9732
|
}
|
|
9705
|
-
}
|
|
9706
|
-
else {
|
|
9707
|
-
observer.error(err);
|
|
9708
|
-
}
|
|
9709
|
-
});
|
|
9733
|
+
} });
|
|
9710
9734
|
}
|
|
9711
9735
|
else {
|
|
9712
9736
|
observer.error();
|
|
@@ -10028,83 +10052,88 @@ class RecordingService extends BasicRecordingService {
|
|
|
10028
10052
|
let wobs = new Observable(observer => {
|
|
10029
10053
|
if (recordingFile.session) {
|
|
10030
10054
|
let obs = this.fetchSprAudiofile(projectName, recordingFile.session, recordingFile.itemCode, recordingFile.version);
|
|
10031
|
-
obs.subscribe(
|
|
10032
|
-
|
|
10033
|
-
|
|
10055
|
+
obs.subscribe({
|
|
10056
|
+
next: resp => {
|
|
10057
|
+
//console.log("Fetched audio file. HTTP response status: "+resp.status+", type: "+resp.type+", byte length: "+ resp.body.byteLength);
|
|
10058
|
+
// Do not use Promise version, which does not work with Safari 13 (13.0.5)
|
|
10059
|
+
if (resp.body) {
|
|
10060
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
10061
|
+
let abs = new AudioBufferSource(ab);
|
|
10062
|
+
RecordingFileUtils.setAudioData(recordingFile, new AudioDataHolder(abs));
|
|
10063
|
+
if (this.debugDelay > 0) {
|
|
10064
|
+
window.setTimeout(() => {
|
|
10065
|
+
observer.next(recordingFile);
|
|
10066
|
+
observer.complete();
|
|
10067
|
+
}, this.debugDelay);
|
|
10068
|
+
}
|
|
10069
|
+
else {
|
|
10070
|
+
observer.next(recordingFile);
|
|
10071
|
+
observer.complete();
|
|
10072
|
+
}
|
|
10073
|
+
}, error => {
|
|
10074
|
+
observer.error(error);
|
|
10075
|
+
observer.complete();
|
|
10076
|
+
});
|
|
10077
|
+
}
|
|
10078
|
+
else {
|
|
10079
|
+
observer.error('Fetching audio file: response has no body');
|
|
10080
|
+
}
|
|
10081
|
+
},
|
|
10082
|
+
error: (err) => {
|
|
10083
|
+
if (err instanceof HttpErrorResponse && err.status == 404) {
|
|
10084
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
10085
|
+
observer.next(null);
|
|
10086
|
+
observer.complete();
|
|
10087
|
+
}
|
|
10088
|
+
else {
|
|
10089
|
+
// all other states are errors
|
|
10090
|
+
observer.error(err);
|
|
10091
|
+
}
|
|
10092
|
+
}
|
|
10093
|
+
});
|
|
10094
|
+
}
|
|
10095
|
+
else {
|
|
10096
|
+
observer.error();
|
|
10097
|
+
}
|
|
10098
|
+
});
|
|
10099
|
+
return wobs;
|
|
10100
|
+
}
|
|
10101
|
+
fetchRecordingFile(aCtx, projectName, sessId, itemcode, version) {
|
|
10102
|
+
let wobs = new Observable(observer => {
|
|
10103
|
+
let obs = this.fetchSprAudiofile(projectName, sessId, itemcode, version);
|
|
10104
|
+
obs.subscribe({ next: resp => {
|
|
10105
|
+
// Do not use Promise version, which does not work with Safari 13
|
|
10034
10106
|
if (resp.body) {
|
|
10035
10107
|
aCtx.decodeAudioData(resp.body, ab => {
|
|
10036
10108
|
let abs = new AudioBufferSource(ab);
|
|
10037
|
-
|
|
10109
|
+
let adh = new AudioDataHolder(abs);
|
|
10110
|
+
let rf = new SprRecordingFile(sessId, itemcode, version, adh);
|
|
10038
10111
|
if (this.debugDelay > 0) {
|
|
10039
10112
|
window.setTimeout(() => {
|
|
10040
|
-
observer.next(
|
|
10113
|
+
observer.next(rf);
|
|
10041
10114
|
observer.complete();
|
|
10042
10115
|
}, this.debugDelay);
|
|
10043
10116
|
}
|
|
10044
10117
|
else {
|
|
10045
|
-
observer.next(
|
|
10118
|
+
observer.next(rf);
|
|
10046
10119
|
observer.complete();
|
|
10047
10120
|
}
|
|
10048
|
-
}, error => {
|
|
10049
|
-
observer.error(error);
|
|
10050
|
-
observer.complete();
|
|
10051
10121
|
});
|
|
10052
10122
|
}
|
|
10053
10123
|
else {
|
|
10054
|
-
observer.error(
|
|
10124
|
+
observer.error();
|
|
10055
10125
|
}
|
|
10056
|
-
},
|
|
10126
|
+
},
|
|
10127
|
+
error: (err) => {
|
|
10057
10128
|
if (err instanceof HttpErrorResponse && err.status == 404) {
|
|
10058
10129
|
// Interpret not as an error, the file ist not recorded yet
|
|
10059
10130
|
observer.next(null);
|
|
10060
10131
|
observer.complete();
|
|
10061
10132
|
}
|
|
10062
10133
|
else {
|
|
10063
|
-
// all other
|
|
10134
|
+
// all other errors are real errors
|
|
10064
10135
|
observer.error(err);
|
|
10065
10136
|
}
|
|
10066
|
-
});
|
|
10067
|
-
}
|
|
10068
|
-
else {
|
|
10069
|
-
observer.error();
|
|
10070
|
-
}
|
|
10071
|
-
});
|
|
10072
|
-
return wobs;
|
|
10073
|
-
}
|
|
10074
|
-
fetchRecordingFile(aCtx, projectName, sessId, itemcode, version) {
|
|
10075
|
-
let wobs = new Observable(observer => {
|
|
10076
|
-
let obs = this.fetchSprAudiofile(projectName, sessId, itemcode, version);
|
|
10077
|
-
obs.subscribe(resp => {
|
|
10078
|
-
// Do not use Promise version, which does not work with Safari 13
|
|
10079
|
-
if (resp.body) {
|
|
10080
|
-
aCtx.decodeAudioData(resp.body, ab => {
|
|
10081
|
-
let abs = new AudioBufferSource(ab);
|
|
10082
|
-
let adh = new AudioDataHolder(abs);
|
|
10083
|
-
let rf = new SprRecordingFile(sessId, itemcode, version, adh);
|
|
10084
|
-
if (this.debugDelay > 0) {
|
|
10085
|
-
window.setTimeout(() => {
|
|
10086
|
-
observer.next(rf);
|
|
10087
|
-
observer.complete();
|
|
10088
|
-
}, this.debugDelay);
|
|
10089
|
-
}
|
|
10090
|
-
else {
|
|
10091
|
-
observer.next(rf);
|
|
10092
|
-
observer.complete();
|
|
10093
|
-
}
|
|
10094
|
-
});
|
|
10095
|
-
}
|
|
10096
|
-
else {
|
|
10097
|
-
observer.error();
|
|
10098
|
-
}
|
|
10099
|
-
}, (err) => {
|
|
10100
|
-
if (err instanceof HttpErrorResponse && err.status == 404) {
|
|
10101
|
-
// Interpret not as an error, the file ist not recorded yet
|
|
10102
|
-
observer.next(null);
|
|
10103
|
-
observer.complete();
|
|
10104
|
-
}
|
|
10105
|
-
else {
|
|
10106
|
-
// all other errors are real errors
|
|
10107
|
-
observer.error(err);
|
|
10108
10137
|
}
|
|
10109
10138
|
});
|
|
10110
10139
|
});
|
|
@@ -10115,9 +10144,9 @@ class RecordingService extends BasicRecordingService {
|
|
|
10115
10144
|
//public static readonly DEFAULT_CHUNKED_DOWNLOAD_SECONDS:number=4;
|
|
10116
10145
|
RecordingService.REC_API_CTX = 'recfile';
|
|
10117
10146
|
RecordingService.RECORDING_API_CTX = 'recordingfile';
|
|
10118
|
-
RecordingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10119
|
-
RecordingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
10120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10147
|
+
RecordingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10148
|
+
RecordingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingService });
|
|
10149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingService, decorators: [{
|
|
10121
10150
|
type: Injectable
|
|
10122
10151
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
10123
10152
|
type: Inject,
|
|
@@ -10492,14 +10521,14 @@ class LevelBar {
|
|
|
10492
10521
|
}
|
|
10493
10522
|
}
|
|
10494
10523
|
}
|
|
10495
|
-
LevelBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10496
|
-
LevelBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10524
|
+
LevelBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LevelBar, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10525
|
+
LevelBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: LevelBar, 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: `
|
|
10497
10526
|
<div #virtualCanvas>
|
|
10498
10527
|
<canvas #levelbar></canvas>
|
|
10499
10528
|
<canvas #markerCanvas></canvas>
|
|
10500
10529
|
</div>
|
|
10501
10530
|
`, isInline: true, styles: [":host{width:100%;background:darkgray;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"] });
|
|
10502
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10531
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LevelBar, decorators: [{
|
|
10503
10532
|
type: Component,
|
|
10504
10533
|
args: [{ selector: 'audio-levelbar', template: `
|
|
10505
10534
|
<div #virtualCanvas>
|
|
@@ -10537,14 +10566,14 @@ class StatusDisplay {
|
|
|
10537
10566
|
this.statusWaiting = false;
|
|
10538
10567
|
}
|
|
10539
10568
|
}
|
|
10540
|
-
StatusDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10541
|
-
StatusDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10569
|
+
StatusDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: StatusDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10570
|
+
StatusDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0, template: `
|
|
10542
10571
|
<p matTooltip="Status">
|
|
10543
10572
|
<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>
|
|
10544
10573
|
{{statusMsg}}
|
|
10545
10574
|
</p>
|
|
10546
10575
|
`, 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", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
10547
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10576
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: StatusDisplay, decorators: [{
|
|
10548
10577
|
type: Component,
|
|
10549
10578
|
args: [{ selector: 'app-sprstatusdisplay', template: `
|
|
10550
10579
|
<p matTooltip="Status">
|
|
@@ -10563,7 +10592,7 @@ class UploadStatus {
|
|
|
10563
10592
|
constructor() {
|
|
10564
10593
|
this._awaitNewUpload = false;
|
|
10565
10594
|
this.spinnerMode = 'determinate';
|
|
10566
|
-
this.
|
|
10595
|
+
this.colorStatus = 'primary';
|
|
10567
10596
|
this._value = 100;
|
|
10568
10597
|
this.displayValue = null;
|
|
10569
10598
|
this.toolTipText = '';
|
|
@@ -10602,13 +10631,13 @@ class UploadStatus {
|
|
|
10602
10631
|
set status(status) {
|
|
10603
10632
|
this._status = status;
|
|
10604
10633
|
if ('accent' === status) {
|
|
10605
|
-
this.
|
|
10634
|
+
this.colorStatus = 'accent';
|
|
10606
10635
|
}
|
|
10607
10636
|
else if ('warn' === status) {
|
|
10608
|
-
this.
|
|
10637
|
+
this.colorStatus = 'warn';
|
|
10609
10638
|
}
|
|
10610
10639
|
else {
|
|
10611
|
-
this.
|
|
10640
|
+
this.colorStatus = 'primary';
|
|
10612
10641
|
}
|
|
10613
10642
|
this._updateSpinner();
|
|
10614
10643
|
}
|
|
@@ -10616,14 +10645,16 @@ class UploadStatus {
|
|
|
10616
10645
|
return this._status;
|
|
10617
10646
|
}
|
|
10618
10647
|
}
|
|
10619
|
-
UploadStatus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10620
|
-
UploadStatus.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10621
|
-
<mat-progress-spinner [mode]="spinnerMode" [color]="
|
|
10648
|
+
UploadStatus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UploadStatus, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10649
|
+
UploadStatus.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: UploadStatus, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0, template: `
|
|
10650
|
+
<mat-progress-spinner [mode]="spinnerMode" [color]="colorStatus" [diameter]="30" [strokeWidth]="5" [value]="_value"
|
|
10651
|
+
[matTooltip]="toolTipText"></mat-progress-spinner>
|
|
10622
10652
|
`, 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", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
10623
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10653
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UploadStatus, decorators: [{
|
|
10624
10654
|
type: Component,
|
|
10625
10655
|
args: [{ selector: 'app-uploadstatus', template: `
|
|
10626
|
-
<mat-progress-spinner [mode]="spinnerMode" [color]="
|
|
10656
|
+
<mat-progress-spinner [mode]="spinnerMode" [color]="colorStatus" [diameter]="30" [strokeWidth]="5" [value]="_value"
|
|
10657
|
+
[matTooltip]="toolTipText"></mat-progress-spinner>
|
|
10627
10658
|
`, styles: [":host{text-align:left}\n", "mat-progress-spinner{display:inline-block}\n"] }]
|
|
10628
10659
|
}], propDecorators: { value: [{
|
|
10629
10660
|
type: Input
|
|
@@ -10637,11 +10668,11 @@ class ProgressDisplay {
|
|
|
10637
10668
|
this.progressMsg = '[itemcode]';
|
|
10638
10669
|
}
|
|
10639
10670
|
}
|
|
10640
|
-
ProgressDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10641
|
-
ProgressDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10671
|
+
ProgressDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ProgressDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10672
|
+
ProgressDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ProgressDisplay, selector: "app-sprprogressdisplay", ngImport: i0, template: `
|
|
10642
10673
|
<p>{{progressMsg}}</p>
|
|
10643
10674
|
`, isInline: true, styles: [":host{flex:1;width:100%;text-align:left}\n"] });
|
|
10644
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ProgressDisplay, decorators: [{
|
|
10645
10676
|
type: Component,
|
|
10646
10677
|
args: [{ selector: 'app-sprprogressdisplay', template: `
|
|
10647
10678
|
<p>{{progressMsg}}</p>
|
|
@@ -10732,8 +10763,8 @@ class TransportPanel extends ResponsiveComponent {
|
|
|
10732
10763
|
}
|
|
10733
10764
|
}
|
|
10734
10765
|
}
|
|
10735
|
-
TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10736
|
-
TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10766
|
+
TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
10767
|
+
TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, usesInheritance: true, ngImport: i0, template: `
|
|
10737
10768
|
<button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
|
|
10738
10769
|
mat-raised-button>
|
|
10739
10770
|
<mat-icon>chevron_left</mat-icon>
|
|
@@ -10754,7 +10785,7 @@ TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
10754
10785
|
</button>
|
|
10755
10786
|
|
|
10756
10787
|
`, 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"], 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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
|
|
10757
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, decorators: [{
|
|
10758
10789
|
type: Component,
|
|
10759
10790
|
args: [{ selector: 'app-sprtransport', template: `
|
|
10760
10791
|
<button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
|
|
@@ -10777,7 +10808,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
10777
10808
|
</button>
|
|
10778
10809
|
|
|
10779
10810
|
`, 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"] }]
|
|
10780
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
10811
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }]; }, propDecorators: { readonly: [{
|
|
10781
10812
|
type: Input
|
|
10782
10813
|
}], actions: [{
|
|
10783
10814
|
type: Input
|
|
@@ -10794,11 +10825,11 @@ class WakeLockIndicator {
|
|
|
10794
10825
|
this._screenLocked = screenLock;
|
|
10795
10826
|
}
|
|
10796
10827
|
}
|
|
10797
|
-
WakeLockIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10798
|
-
WakeLockIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10828
|
+
WakeLockIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WakeLockIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10829
|
+
WakeLockIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: { screenLocked: "screenLocked" }, ngImport: i0, template: `
|
|
10799
10830
|
<mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
|
|
10800
10831
|
`, 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"] }] });
|
|
10801
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10832
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WakeLockIndicator, decorators: [{
|
|
10802
10833
|
type: Component,
|
|
10803
10834
|
args: [{ selector: 'app-wakelockindicator', template: `
|
|
10804
10835
|
<mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
|
|
@@ -10821,11 +10852,11 @@ class ReadyStateIndicator {
|
|
|
10821
10852
|
return this._ready;
|
|
10822
10853
|
}
|
|
10823
10854
|
}
|
|
10824
|
-
ReadyStateIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10825
|
-
ReadyStateIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10855
|
+
ReadyStateIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ReadyStateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10856
|
+
ReadyStateIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: { ready: "ready" }, ngImport: i0, template: `
|
|
10826
10857
|
<mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
|
|
10827
10858
|
`, 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]", exportAs: ["matTooltip"] }] });
|
|
10828
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10859
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ReadyStateIndicator, decorators: [{
|
|
10829
10860
|
type: Component,
|
|
10830
10861
|
args: [{ selector: 'app-readystateindicator', template: `
|
|
10831
10862
|
<mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
|
|
@@ -10849,8 +10880,8 @@ class ControlPanel extends ResponsiveComponent {
|
|
|
10849
10880
|
return this._ready;
|
|
10850
10881
|
}
|
|
10851
10882
|
}
|
|
10852
|
-
ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10853
|
-
ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
10883
|
+
ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, deps: [{ token: i1$2.BreakpointObserver }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
10884
|
+
ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ControlPanel, 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: `
|
|
10854
10885
|
<div *ngIf="!screenXs" style="flex-direction: row" >
|
|
10855
10886
|
<app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10856
10887
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
@@ -10859,9 +10890,9 @@ ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
10859
10890
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10860
10891
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10861
10892
|
</div>
|
|
10862
|
-
<div *ngIf="screenXs"style="flex-direction: column" >
|
|
10893
|
+
<div *ngIf="screenXs" style="flex-direction: column" >
|
|
10863
10894
|
<div style="flex-direction: row" class="flexFill" >
|
|
10864
|
-
<app-sprstatusdisplay style="flex:10 0 0
|
|
10895
|
+
<app-sprstatusdisplay style="flex:10 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10865
10896
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10866
10897
|
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10867
10898
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
@@ -10871,7 +10902,7 @@ ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
10871
10902
|
|
|
10872
10903
|
</div>
|
|
10873
10904
|
`, 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"] }] });
|
|
10874
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
10905
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, decorators: [{
|
|
10875
10906
|
type: Component,
|
|
10876
10907
|
args: [{ selector: 'app-sprcontrolpanel', template: `
|
|
10877
10908
|
<div *ngIf="!screenXs" style="flex-direction: row" >
|
|
@@ -10882,9 +10913,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
10882
10913
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
10883
10914
|
<app-readystateindicator [ready]="_ready"></app-readystateindicator>
|
|
10884
10915
|
</div>
|
|
10885
|
-
<div *ngIf="screenXs"style="flex-direction: column" >
|
|
10916
|
+
<div *ngIf="screenXs" style="flex-direction: column" >
|
|
10886
10917
|
<div style="flex-direction: row" class="flexFill" >
|
|
10887
|
-
<app-sprstatusdisplay style="flex:10 0 0
|
|
10918
|
+
<app-sprstatusdisplay style="flex:10 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
|
|
10888
10919
|
class="hidden-xs"></app-sprstatusdisplay>
|
|
10889
10920
|
<app-uploadstatus style="flex:0 0 0" *ngIf="enableUploadRecordings" [value]="uploadProgress"
|
|
10890
10921
|
[status]="uploadStatus" [awaitNewUpload]="processing"></app-uploadstatus>
|
|
@@ -10894,7 +10925,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
10894
10925
|
|
|
10895
10926
|
</div>
|
|
10896
10927
|
`, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"] }]
|
|
10897
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
10928
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }, { type: i1$3.MatDialog }]; }, propDecorators: { statusDisplay: [{
|
|
10898
10929
|
type: ViewChild,
|
|
10899
10930
|
args: [StatusDisplay, { static: true }]
|
|
10900
10931
|
}], transportPanel: [{
|
|
@@ -11545,8 +11576,8 @@ class RecordingItemControls extends ResponsiveComponent {
|
|
|
11545
11576
|
// this.status = 'ERROR';
|
|
11546
11577
|
}
|
|
11547
11578
|
}
|
|
11548
|
-
RecordingItemControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
11549
|
-
RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
11579
|
+
RecordingItemControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11580
|
+
RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingItemControls, 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: `
|
|
11550
11581
|
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
11551
11582
|
[disabled]="playStartAction?.disabled"
|
|
11552
11583
|
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
@@ -11569,7 +11600,7 @@ RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
11569
11600
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
11570
11601
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
11571
11602
|
`, isInline: true, styles: [":host{flex:0;width:100%;background:darkgray;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]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }] });
|
|
11572
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
11603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, decorators: [{
|
|
11573
11604
|
type: Component,
|
|
11574
11605
|
args: [{ selector: 'spr-recordingitemcontrols', template: `
|
|
11575
11606
|
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
@@ -11594,7 +11625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
11594
11625
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
11595
11626
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
11596
11627
|
`, styles: [":host{flex:0;width:100%;background:darkgray;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"] }]
|
|
11597
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
11628
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
11598
11629
|
type: Input
|
|
11599
11630
|
}], enableDownload: [{
|
|
11600
11631
|
type: Input
|
|
@@ -11675,7 +11706,7 @@ class RecordingItemDisplay extends ResponsiveComponent {
|
|
|
11675
11706
|
let peakDBVal = levelInfo.powerLevelDB();
|
|
11676
11707
|
if (this.peakDbLvl < peakDBVal) {
|
|
11677
11708
|
this.peakDbLvl = peakDBVal;
|
|
11678
|
-
// the event comes from outside
|
|
11709
|
+
// the event comes from outside an Angular zone
|
|
11679
11710
|
this.changeDetectorRef.detectChanges();
|
|
11680
11711
|
}
|
|
11681
11712
|
this.liveLevel.update(levelInfo);
|
|
@@ -11691,14 +11722,14 @@ class RecordingItemDisplay extends ResponsiveComponent {
|
|
|
11691
11722
|
this.changeDetectorRef.detectChanges();
|
|
11692
11723
|
}
|
|
11693
11724
|
}
|
|
11694
|
-
RecordingItemDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
11695
|
-
RecordingItemDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
11725
|
+
RecordingItemDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i1$2.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11726
|
+
RecordingItemDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingItemDisplay, 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: `
|
|
11696
11727
|
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
11697
11728
|
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
11698
11729
|
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
11699
11730
|
</div>
|
|
11700
11731
|
`, isInline: true, styles: ["div{width:100%;background:darkgray;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"] }] });
|
|
11701
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
11732
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, decorators: [{
|
|
11702
11733
|
type: Component,
|
|
11703
11734
|
args: [{ selector: 'spr-recordingitemdisplay', template: `
|
|
11704
11735
|
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
@@ -11706,7 +11737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
11706
11737
|
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
11707
11738
|
</div>
|
|
11708
11739
|
`, styles: ["div{width:100%;background:darkgray;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"] }]
|
|
11709
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
11740
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
11710
11741
|
type: ViewChild,
|
|
11711
11742
|
args: [LevelBar, { static: true }]
|
|
11712
11743
|
}], streamingMode: [{
|
|
@@ -12743,9 +12774,9 @@ class SpeechRecorderUploader extends Uploader {
|
|
|
12743
12774
|
this.config = config;
|
|
12744
12775
|
}
|
|
12745
12776
|
}
|
|
12746
|
-
SpeechRecorderUploader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
12747
|
-
SpeechRecorderUploader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
12748
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
12777
|
+
SpeechRecorderUploader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechRecorderUploader, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12778
|
+
SpeechRecorderUploader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechRecorderUploader });
|
|
12779
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechRecorderUploader, decorators: [{
|
|
12749
12780
|
type: Injectable
|
|
12750
12781
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
12751
12782
|
type: Inject,
|
|
@@ -12765,12 +12796,12 @@ class WarningBar {
|
|
|
12765
12796
|
}
|
|
12766
12797
|
}
|
|
12767
12798
|
}
|
|
12768
|
-
WarningBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
12769
|
-
WarningBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
12799
|
+
WarningBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WarningBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12800
|
+
WarningBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: WarningBar, selector: "app-warningbar", inputs: { warningText: "warningText", show: "show" }, providers: [SessionService], ngImport: i0, template: `
|
|
12770
12801
|
<div [class]="displayClass">{{warningText}}</div>
|
|
12771
12802
|
|
|
12772
12803
|
`, 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"] });
|
|
12773
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
12804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WarningBar, decorators: [{
|
|
12774
12805
|
type: Component,
|
|
12775
12806
|
args: [{ selector: 'app-warningbar', providers: [SessionService], template: `
|
|
12776
12807
|
<div [class]="displayClass">{{warningText}}</div>
|
|
@@ -13957,8 +13988,8 @@ class SessionManager extends BasicRecorder {
|
|
|
13957
13988
|
}
|
|
13958
13989
|
}
|
|
13959
13990
|
}
|
|
13960
|
-
SessionManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
13961
|
-
SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
13991
|
+
SessionManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", 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 });
|
|
13992
|
+
SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SessionManager, 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: `
|
|
13962
13993
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
13963
13994
|
<app-warningbar [show]="isDefaultAudioTestSession()" warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
|
|
13964
13995
|
<app-sprprompting [projectName]="projectName"
|
|
@@ -14008,7 +14039,7 @@ SessionManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
14008
14039
|
</div>
|
|
14009
14040
|
</div>
|
|
14010
14041
|
`, isInline: true, styles: [":host{flex:2;background:lightgrey;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:darkgray}\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"] }] });
|
|
14011
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
14042
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SessionManager, decorators: [{
|
|
14012
14043
|
type: Component,
|
|
14013
14044
|
args: [{ selector: 'app-sprrecordingsession', providers: [SessionService], template: `
|
|
14014
14045
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
@@ -14060,7 +14091,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
14060
14091
|
</div>
|
|
14061
14092
|
</div>
|
|
14062
14093
|
`, styles: [":host{flex:2;background:lightgrey;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:darkgray}\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"] }]
|
|
14063
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
14094
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$3.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
14064
14095
|
type: Inject,
|
|
14065
14096
|
args: [SPEECHRECORDER_CONFIG]
|
|
14066
14097
|
}] }]; }, propDecorators: { projectName: [{
|
|
@@ -14192,9 +14223,9 @@ SprDb.dbName = 'speechrecorder';
|
|
|
14192
14223
|
SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME = '_recording_file_cache';
|
|
14193
14224
|
//public static RECORDING_FILE_CHUNKS_OBJECT_STORE_NAME='rec_file_chunks';
|
|
14194
14225
|
SprDb.dbVersion = 1;
|
|
14195
|
-
SprDb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
14196
|
-
SprDb.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
14197
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
14226
|
+
SprDb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SprDb, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14227
|
+
SprDb.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SprDb });
|
|
14228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SprDb, decorators: [{
|
|
14198
14229
|
type: Injectable
|
|
14199
14230
|
}], ctorParameters: function () { return []; } });
|
|
14200
14231
|
|
|
@@ -14292,9 +14323,9 @@ class ScriptService {
|
|
|
14292
14323
|
return this.http.get(scriptUrl, { withCredentials: this.withCredentials });
|
|
14293
14324
|
}
|
|
14294
14325
|
}
|
|
14295
|
-
ScriptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
14296
|
-
ScriptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
14297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
14326
|
+
ScriptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScriptService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14327
|
+
ScriptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScriptService });
|
|
14328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScriptService, decorators: [{
|
|
14298
14329
|
type: Injectable
|
|
14299
14330
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
14300
14331
|
type: Inject,
|
|
@@ -14506,7 +14537,7 @@ class SpeechrecorderngComponent extends RecorderComponent {
|
|
|
14506
14537
|
}
|
|
14507
14538
|
else {
|
|
14508
14539
|
// all this attempts to customize the message do not work anymore (for security reasons)!!
|
|
14509
|
-
|
|
14540
|
+
const message = "Please do not leave the page, until all recordings are uploaded!";
|
|
14510
14541
|
alert(message);
|
|
14511
14542
|
e = e || window.event;
|
|
14512
14543
|
if (e) {
|
|
@@ -14630,7 +14661,7 @@ class SpeechrecorderngComponent extends RecorderComponent {
|
|
|
14630
14661
|
projUrl = window.location.protocol + '//' + window.location.hostname + ':' + window.location.port + '/wikispeech/rest/projects/?sessionId=' + this.sessionId;
|
|
14631
14662
|
}
|
|
14632
14663
|
if (projUrl) {
|
|
14633
|
-
|
|
14664
|
+
const pLoader = new XMLHttpRequest();
|
|
14634
14665
|
pLoader.open("GET", projUrl, true);
|
|
14635
14666
|
pLoader.setRequestHeader('Accept', 'application/json');
|
|
14636
14667
|
pLoader.responseType = "json";
|
|
@@ -14665,25 +14696,25 @@ class SpeechrecorderngComponent extends RecorderComponent {
|
|
|
14665
14696
|
this.sm.statusMsg = 'ERROR: Recording.';
|
|
14666
14697
|
}
|
|
14667
14698
|
}
|
|
14668
|
-
SpeechrecorderngComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
14669
|
-
SpeechrecorderngComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
14699
|
+
SpeechrecorderngComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", 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 });
|
|
14700
|
+
SpeechrecorderngComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SpeechrecorderngComponent, selector: "app-speechrecorder", providers: [SessionService], viewQueries: [{ propertyName: "sm", first: true, predicate: SessionManager, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
14670
14701
|
<app-sprrecordingsession [projectName]="project?.name" [dataSaved]="dataSaved"></app-sprrecordingsession>
|
|
14671
14702
|
`, 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"] }] });
|
|
14672
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
14703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngComponent, decorators: [{
|
|
14673
14704
|
type: Component,
|
|
14674
14705
|
args: [{ selector: 'app-speechrecorder', providers: [SessionService], template: `
|
|
14675
14706
|
<app-sprrecordingsession [projectName]="project?.name" [dataSaved]="dataSaved"></app-sprrecordingsession>
|
|
14676
14707
|
`, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0}\n"] }]
|
|
14677
|
-
}], ctorParameters: function () { return [{ type:
|
|
14708
|
+
}], ctorParameters: function () { return [{ type: i4$2.ActivatedRoute }, { type: i4$2.Router }, { type: i0.ChangeDetectorRef }, { type: SessionService }, { type: ProjectService }, { type: ScriptService }, { type: RecordingService }, { type: SpeechRecorderUploader }]; }, propDecorators: { sm: [{
|
|
14678
14709
|
type: ViewChild,
|
|
14679
14710
|
args: [SessionManager, { static: true }]
|
|
14680
14711
|
}] } });
|
|
14681
14712
|
|
|
14682
14713
|
class ScrollPaneHorizontal {
|
|
14683
14714
|
}
|
|
14684
|
-
ScrollPaneHorizontal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
14685
|
-
ScrollPaneHorizontal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
14686
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
14715
|
+
ScrollPaneHorizontal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScrollPaneHorizontal, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14716
|
+
ScrollPaneHorizontal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ScrollPaneHorizontal, selector: "scroll-pane-horizontal", ngImport: i0, template: '', isInline: true, styles: [":host{width:100%;background:darkgray;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] });
|
|
14717
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScrollPaneHorizontal, decorators: [{
|
|
14687
14718
|
type: Component,
|
|
14688
14719
|
args: [{ selector: 'scroll-pane-horizontal', template: '', styles: [":host{width:100%;background:darkgray;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }]
|
|
14689
14720
|
}] });
|
|
@@ -14880,8 +14911,8 @@ class AudioDisplayPlayer {
|
|
|
14880
14911
|
this.status = 'ERROR';
|
|
14881
14912
|
}
|
|
14882
14913
|
}
|
|
14883
|
-
AudioDisplayPlayer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
14884
|
-
AudioDisplayPlayer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
14914
|
+
AudioDisplayPlayer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplayPlayer, deps: [{ token: i4$2.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
14915
|
+
AudioDisplayPlayer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioDisplayPlayer, 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: `
|
|
14885
14916
|
|
|
14886
14917
|
<audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
|
|
14887
14918
|
|
|
@@ -14895,7 +14926,7 @@ AudioDisplayPlayer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
14895
14926
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
14896
14927
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control><p>{{status}}
|
|
14897
14928
|
`, 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"] }] });
|
|
14898
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
14929
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioDisplayPlayer, decorators: [{
|
|
14899
14930
|
type: Component,
|
|
14900
14931
|
args: [{ selector: 'app-audiodisplayplayer', template: `
|
|
14901
14932
|
|
|
@@ -14911,7 +14942,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
14911
14942
|
[zoomSelectedAction]="zoomSelectedAction"
|
|
14912
14943
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control><p>{{status}}
|
|
14913
14944
|
`, 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"] }]
|
|
14914
|
-
}], ctorParameters: function () { return [{ type:
|
|
14945
|
+
}], ctorParameters: function () { return [{ type: i4$2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { playStartAction: [{
|
|
14915
14946
|
type: Input
|
|
14916
14947
|
}], playStopAction: [{
|
|
14917
14948
|
type: Input
|
|
@@ -15061,37 +15092,39 @@ class RecordingFileService extends BasicRecordingService {
|
|
|
15061
15092
|
let wobs = new Observable(observer => {
|
|
15062
15093
|
if (recordingFile.recordingFileId) {
|
|
15063
15094
|
let obs = this.fetchAudiofile(recordingFile.recordingFileId);
|
|
15064
|
-
obs.subscribe(resp => {
|
|
15065
|
-
|
|
15066
|
-
|
|
15067
|
-
|
|
15068
|
-
|
|
15069
|
-
|
|
15070
|
-
|
|
15071
|
-
|
|
15095
|
+
obs.subscribe({ next: resp => {
|
|
15096
|
+
// Do not use Promise version, which does not work with Safari 13
|
|
15097
|
+
if (resp.body) {
|
|
15098
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
15099
|
+
let as = new AudioBufferSource(ab);
|
|
15100
|
+
RecordingFileUtils.setAudioData(recordingFile, new AudioDataHolder(as));
|
|
15101
|
+
if (this.debugDelay > 0) {
|
|
15102
|
+
window.setTimeout(() => {
|
|
15103
|
+
observer.next(recordingFile);
|
|
15104
|
+
observer.complete();
|
|
15105
|
+
}, this.debugDelay);
|
|
15106
|
+
}
|
|
15107
|
+
else {
|
|
15072
15108
|
observer.next(recordingFile);
|
|
15073
15109
|
observer.complete();
|
|
15074
|
-
}
|
|
15075
|
-
}
|
|
15076
|
-
|
|
15077
|
-
|
|
15078
|
-
|
|
15079
|
-
|
|
15080
|
-
|
|
15081
|
-
|
|
15082
|
-
|
|
15083
|
-
|
|
15084
|
-
|
|
15085
|
-
|
|
15086
|
-
|
|
15087
|
-
|
|
15088
|
-
|
|
15089
|
-
|
|
15090
|
-
|
|
15091
|
-
|
|
15092
|
-
// all other states are errors
|
|
15093
|
-
observer.error(error);
|
|
15094
|
-
observer.complete();
|
|
15110
|
+
}
|
|
15111
|
+
});
|
|
15112
|
+
}
|
|
15113
|
+
else {
|
|
15114
|
+
observer.error('Received no audio data!');
|
|
15115
|
+
}
|
|
15116
|
+
},
|
|
15117
|
+
error: (error) => {
|
|
15118
|
+
if (error.status == 404) {
|
|
15119
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
15120
|
+
observer.next(null);
|
|
15121
|
+
observer.complete();
|
|
15122
|
+
}
|
|
15123
|
+
else {
|
|
15124
|
+
// all other states are errors
|
|
15125
|
+
observer.error(error);
|
|
15126
|
+
observer.complete();
|
|
15127
|
+
}
|
|
15095
15128
|
}
|
|
15096
15129
|
});
|
|
15097
15130
|
}
|
|
@@ -15105,81 +15138,39 @@ class RecordingFileService extends BasicRecordingService {
|
|
|
15105
15138
|
let wobs = new Observable(observer => {
|
|
15106
15139
|
let rf = null;
|
|
15107
15140
|
let rfDescrObs = this.recordingFileDescrObserver(recordingFileId);
|
|
15108
|
-
rfDescrObs.subscribe(value => {
|
|
15109
|
-
|
|
15110
|
-
|
|
15111
|
-
|
|
15112
|
-
|
|
15113
|
-
|
|
15114
|
-
|
|
15115
|
-
|
|
15116
|
-
|
|
15117
|
-
|
|
15118
|
-
|
|
15119
|
-
|
|
15120
|
-
|
|
15121
|
-
|
|
15122
|
-
|
|
15123
|
-
|
|
15124
|
-
|
|
15125
|
-
|
|
15126
|
-
|
|
15127
|
-
|
|
15128
|
-
|
|
15129
|
-
|
|
15141
|
+
rfDescrObs.subscribe({ next: value => {
|
|
15142
|
+
rf = value;
|
|
15143
|
+
}, error: (error) => {
|
|
15144
|
+
observer.error(error);
|
|
15145
|
+
}, complete: () => {
|
|
15146
|
+
let rfAudioObs = this.fetchAudiofile(recordingFileId);
|
|
15147
|
+
rfAudioObs.subscribe({
|
|
15148
|
+
next: resp => {
|
|
15149
|
+
// Do not use Promise version, which does not work with Safari 13
|
|
15150
|
+
if (resp.body) {
|
|
15151
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
15152
|
+
if (rf) {
|
|
15153
|
+
let as = new AudioBufferSource(ab);
|
|
15154
|
+
RecordingFileUtils.setAudioData(rf, new AudioDataHolder(as));
|
|
15155
|
+
}
|
|
15156
|
+
else {
|
|
15157
|
+
observer.error('Recording file object null');
|
|
15158
|
+
}
|
|
15159
|
+
if (this.debugDelay > 0) {
|
|
15160
|
+
window.setTimeout(() => {
|
|
15161
|
+
observer.next(rf);
|
|
15162
|
+
observer.complete();
|
|
15163
|
+
}, this.debugDelay);
|
|
15164
|
+
}
|
|
15165
|
+
else {
|
|
15166
|
+
observer.next(rf);
|
|
15167
|
+
observer.complete();
|
|
15168
|
+
}
|
|
15169
|
+
});
|
|
15130
15170
|
}
|
|
15131
15171
|
else {
|
|
15132
|
-
observer.
|
|
15133
|
-
observer.complete();
|
|
15172
|
+
observer.error('Received no audio data');
|
|
15134
15173
|
}
|
|
15135
|
-
});
|
|
15136
|
-
}
|
|
15137
|
-
else {
|
|
15138
|
-
observer.error('Received no audio data');
|
|
15139
|
-
}
|
|
15140
|
-
}, (error) => {
|
|
15141
|
-
if (error.status == 404) {
|
|
15142
|
-
// Interpret not as an error, the file ist not recorded yet
|
|
15143
|
-
observer.next(null);
|
|
15144
|
-
observer.complete();
|
|
15145
|
-
}
|
|
15146
|
-
else {
|
|
15147
|
-
// all other states are errors
|
|
15148
|
-
observer.error(error);
|
|
15149
|
-
observer.complete();
|
|
15150
|
-
}
|
|
15151
|
-
});
|
|
15152
|
-
});
|
|
15153
|
-
});
|
|
15154
|
-
return wobs;
|
|
15155
|
-
}
|
|
15156
|
-
fetchSprRecordingFile(aCtx, recordingFileId) {
|
|
15157
|
-
let wobs = new Observable(observer => {
|
|
15158
|
-
let rf = null;
|
|
15159
|
-
let rfDescrObs = this.sprRecordingFileDescrObserver(recordingFileId);
|
|
15160
|
-
rfDescrObs.subscribe(value => {
|
|
15161
|
-
rf = value;
|
|
15162
|
-
}, (error) => {
|
|
15163
|
-
observer.error(error);
|
|
15164
|
-
}, () => {
|
|
15165
|
-
let sampleCnt = null;
|
|
15166
|
-
if (rf && rf.channels && rf.frames) {
|
|
15167
|
-
sampleCnt = rf.channels * rf.frames;
|
|
15168
|
-
}
|
|
15169
|
-
// TODO use download storage type depending on sample count of file
|
|
15170
|
-
if (rf && rf.samplerate && sampleCnt != null && sampleCnt > this._maxAutoNetMemStoreSamples) {
|
|
15171
|
-
const baseUrl = this.recoFileUrl(recordingFileId);
|
|
15172
|
-
const obNetAb = this.chunkAudioRequestToNetAudioBuffer(aCtx, baseUrl, 0, rf?.samplerate, BasicRecordingService.DEFAULT_CHUNKED_DOWNLOAD_SECONDS, rf.frames);
|
|
15173
|
-
obNetAb.subscribe({
|
|
15174
|
-
next: (nab) => {
|
|
15175
|
-
let adh = new AudioDataHolder(nab);
|
|
15176
|
-
if (rf) {
|
|
15177
|
-
RecordingFileUtils.setAudioData(rf, adh);
|
|
15178
|
-
observer.next(rf);
|
|
15179
|
-
}
|
|
15180
|
-
},
|
|
15181
|
-
complete: () => {
|
|
15182
|
-
observer.complete();
|
|
15183
15174
|
},
|
|
15184
15175
|
error: (error) => {
|
|
15185
15176
|
if (error.status == 404) {
|
|
@@ -15195,47 +15186,97 @@ class RecordingFileService extends BasicRecordingService {
|
|
|
15195
15186
|
}
|
|
15196
15187
|
});
|
|
15197
15188
|
}
|
|
15198
|
-
|
|
15199
|
-
|
|
15200
|
-
|
|
15201
|
-
|
|
15202
|
-
|
|
15203
|
-
|
|
15189
|
+
});
|
|
15190
|
+
});
|
|
15191
|
+
return wobs;
|
|
15192
|
+
}
|
|
15193
|
+
fetchSprRecordingFile(aCtx, recordingFileId) {
|
|
15194
|
+
let wobs = new Observable(observer => {
|
|
15195
|
+
let rf = null;
|
|
15196
|
+
let rfDescrObs = this.sprRecordingFileDescrObserver(recordingFileId);
|
|
15197
|
+
rfDescrObs.subscribe({ next: value => {
|
|
15198
|
+
rf = value;
|
|
15199
|
+
},
|
|
15200
|
+
error: (error) => {
|
|
15201
|
+
observer.error(error);
|
|
15202
|
+
}, complete: () => {
|
|
15203
|
+
let sampleCnt = null;
|
|
15204
|
+
if (rf && rf.channels && rf.frames) {
|
|
15205
|
+
sampleCnt = rf.channels * rf.frames;
|
|
15206
|
+
}
|
|
15207
|
+
// TODO use download storage type depending on sample count of file
|
|
15208
|
+
if (rf && rf.samplerate && sampleCnt != null && sampleCnt > this._maxAutoNetMemStoreSamples) {
|
|
15209
|
+
const baseUrl = this.recoFileUrl(recordingFileId);
|
|
15210
|
+
const obNetAb = this.chunkAudioRequestToNetAudioBuffer(aCtx, baseUrl, 0, rf?.samplerate, BasicRecordingService.DEFAULT_CHUNKED_DOWNLOAD_SECONDS, rf.frames);
|
|
15211
|
+
obNetAb.subscribe({
|
|
15212
|
+
next: (nab) => {
|
|
15213
|
+
let adh = new AudioDataHolder(nab);
|
|
15204
15214
|
if (rf) {
|
|
15205
|
-
let as = new AudioBufferSource(ab);
|
|
15206
|
-
let adh = new AudioDataHolder(as);
|
|
15207
15215
|
RecordingFileUtils.setAudioData(rf, adh);
|
|
15216
|
+
observer.next(rf);
|
|
15217
|
+
}
|
|
15218
|
+
},
|
|
15219
|
+
complete: () => {
|
|
15220
|
+
observer.complete();
|
|
15221
|
+
},
|
|
15222
|
+
error: (error) => {
|
|
15223
|
+
if (error.status == 404) {
|
|
15224
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
15225
|
+
observer.next(null);
|
|
15226
|
+
observer.complete();
|
|
15208
15227
|
}
|
|
15209
15228
|
else {
|
|
15210
|
-
|
|
15229
|
+
// all other states are errors
|
|
15230
|
+
observer.error(error);
|
|
15231
|
+
observer.complete();
|
|
15211
15232
|
}
|
|
15212
|
-
|
|
15213
|
-
|
|
15214
|
-
|
|
15215
|
-
|
|
15216
|
-
|
|
15233
|
+
}
|
|
15234
|
+
});
|
|
15235
|
+
}
|
|
15236
|
+
else {
|
|
15237
|
+
let rfAudioObs = this.fetchAudiofile(recordingFileId);
|
|
15238
|
+
rfAudioObs.subscribe({ next: resp => {
|
|
15239
|
+
// Do not use Promise version, which does not work with Safari 13
|
|
15240
|
+
if (resp.body) {
|
|
15241
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
15242
|
+
if (rf) {
|
|
15243
|
+
let as = new AudioBufferSource(ab);
|
|
15244
|
+
let adh = new AudioDataHolder(as);
|
|
15245
|
+
RecordingFileUtils.setAudioData(rf, adh);
|
|
15246
|
+
}
|
|
15247
|
+
else {
|
|
15248
|
+
observer.error('Recording file object null');
|
|
15249
|
+
}
|
|
15250
|
+
if (this.debugDelay > 0) {
|
|
15251
|
+
window.setTimeout(() => {
|
|
15252
|
+
observer.next(rf);
|
|
15253
|
+
observer.complete();
|
|
15254
|
+
}, this.debugDelay);
|
|
15255
|
+
}
|
|
15256
|
+
else {
|
|
15257
|
+
observer.next(rf);
|
|
15258
|
+
observer.complete();
|
|
15259
|
+
}
|
|
15260
|
+
});
|
|
15217
15261
|
}
|
|
15218
15262
|
else {
|
|
15219
|
-
observer.
|
|
15263
|
+
observer.error('Received no audio data');
|
|
15264
|
+
}
|
|
15265
|
+
},
|
|
15266
|
+
error: (error) => {
|
|
15267
|
+
if (error.status == 404) {
|
|
15268
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
15269
|
+
observer.next(null);
|
|
15220
15270
|
observer.complete();
|
|
15221
15271
|
}
|
|
15222
|
-
|
|
15223
|
-
|
|
15224
|
-
|
|
15225
|
-
|
|
15226
|
-
|
|
15227
|
-
|
|
15228
|
-
|
|
15229
|
-
|
|
15230
|
-
observer.next(null);
|
|
15231
|
-
observer.complete();
|
|
15232
|
-
}
|
|
15233
|
-
else {
|
|
15234
|
-
// all other states are errors
|
|
15235
|
-
observer.error(error);
|
|
15236
|
-
observer.complete();
|
|
15237
|
-
}
|
|
15238
|
-
});
|
|
15272
|
+
else {
|
|
15273
|
+
// all other states are errors
|
|
15274
|
+
observer.error(error);
|
|
15275
|
+
observer.complete();
|
|
15276
|
+
}
|
|
15277
|
+
}
|
|
15278
|
+
});
|
|
15279
|
+
}
|
|
15239
15280
|
}
|
|
15240
15281
|
});
|
|
15241
15282
|
});
|
|
@@ -15253,9 +15294,9 @@ class RecordingFileService extends BasicRecordingService {
|
|
|
15253
15294
|
}
|
|
15254
15295
|
}
|
|
15255
15296
|
RecordingFileService.RECOFILE_API_CTX = 'recordingfile';
|
|
15256
|
-
RecordingFileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
15257
|
-
RecordingFileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
15258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
15297
|
+
RecordingFileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15298
|
+
RecordingFileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileService });
|
|
15299
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileService, decorators: [{
|
|
15259
15300
|
type: Injectable
|
|
15260
15301
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
15261
15302
|
type: Inject,
|
|
@@ -15279,15 +15320,15 @@ class RecordingFileNaviComponent {
|
|
|
15279
15320
|
}
|
|
15280
15321
|
}
|
|
15281
15322
|
}
|
|
15282
|
-
RecordingFileNaviComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
15283
|
-
RecordingFileNaviComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
15323
|
+
RecordingFileNaviComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileNaviComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15324
|
+
RecordingFileNaviComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingFileNaviComponent, 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: `
|
|
15284
15325
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
15285
15326
|
<div #navi style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
|
|
15286
15327
|
<fieldset>
|
|
15287
15328
|
<legend>Versions</legend>
|
|
15288
15329
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
15289
15330
|
<select *ngIf="!naviInfoLoading" [disabled]="versions==null || versions.length==1" (change)="selectVersionChange($event)">
|
|
15290
|
-
<option *ngFor="let v of versions; let i = index" [selected]="v===version" value="{{v}}">{{v}}<
|
|
15331
|
+
<option *ngFor="let v of versions; let i = index" [selected]="v===version" value="{{v}}">{{v}}<ng-container *ngIf="i==0"> (latest)</ng-container></option>
|
|
15291
15332
|
</select>
|
|
15292
15333
|
</fieldset>
|
|
15293
15334
|
<fieldset>
|
|
@@ -15313,7 +15354,7 @@ RecordingFileNaviComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
15313
15354
|
</div>
|
|
15314
15355
|
</div>
|
|
15315
15356
|
`, 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", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
15316
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
15357
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileNaviComponent, decorators: [{
|
|
15317
15358
|
type: Component,
|
|
15318
15359
|
args: [{ selector: 'app-recording-file-navi', template: `
|
|
15319
15360
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
@@ -15322,7 +15363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
15322
15363
|
<legend>Versions</legend>
|
|
15323
15364
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
15324
15365
|
<select *ngIf="!naviInfoLoading" [disabled]="versions==null || versions.length==1" (change)="selectVersionChange($event)">
|
|
15325
|
-
<option *ngFor="let v of versions; let i = index" [selected]="v===version" value="{{v}}">{{v}}<
|
|
15366
|
+
<option *ngFor="let v of versions; let i = index" [selected]="v===version" value="{{v}}">{{v}}<ng-container *ngIf="i==0"> (latest)</ng-container></option>
|
|
15326
15367
|
</select>
|
|
15327
15368
|
</fieldset>
|
|
15328
15369
|
<fieldset>
|
|
@@ -15411,8 +15452,8 @@ class RecordingFileMetaComponent {
|
|
|
15411
15452
|
return t;
|
|
15412
15453
|
}
|
|
15413
15454
|
}
|
|
15414
|
-
RecordingFileMetaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
15415
|
-
RecordingFileMetaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
15455
|
+
RecordingFileMetaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileMetaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15456
|
+
RecordingFileMetaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: { sessionId: "sessionId", stateLoading: "stateLoading", recordingFile: "recordingFile" }, ngImport: i0, template: `
|
|
15416
15457
|
<mat-card>
|
|
15417
15458
|
<mat-card-title>Recording file ID: {{recordingFile?.recordingFileId}}</mat-card-title>
|
|
15418
15459
|
<mat-card-content>
|
|
@@ -15447,7 +15488,7 @@ RecordingFileMetaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
15447
15488
|
</mat-card-content>
|
|
15448
15489
|
</mat-card>
|
|
15449
15490
|
`, 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", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] });
|
|
15450
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
15491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileMetaComponent, decorators: [{
|
|
15451
15492
|
type: Component,
|
|
15452
15493
|
args: [{ selector: 'app-recording-file-meta', template: `
|
|
15453
15494
|
<mat-card>
|
|
@@ -15685,47 +15726,49 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
|
|
|
15685
15726
|
let audioContext = AudioContextProvider.audioContextInstance();
|
|
15686
15727
|
if (audioContext) {
|
|
15687
15728
|
this.audioFetching = true;
|
|
15688
|
-
this.recordingFileService.fetchSprRecordingFile(audioContext, rfId).subscribe(
|
|
15689
|
-
|
|
15690
|
-
|
|
15691
|
-
|
|
15692
|
-
|
|
15693
|
-
|
|
15694
|
-
|
|
15695
|
-
|
|
15696
|
-
|
|
15697
|
-
|
|
15698
|
-
|
|
15699
|
-
|
|
15700
|
-
|
|
15701
|
-
|
|
15702
|
-
|
|
15703
|
-
|
|
15704
|
-
|
|
15705
|
-
|
|
15706
|
-
let sel = null;
|
|
15707
|
-
if (esffsr != null) {
|
|
15708
|
-
if (eeffsr != null) {
|
|
15709
|
-
sel = new Selection(ab.sampleRate, esffsr, eeffsr);
|
|
15729
|
+
this.recordingFileService.fetchSprRecordingFile(audioContext, rfId).subscribe({
|
|
15730
|
+
next: value => {
|
|
15731
|
+
this.audioFetching = false;
|
|
15732
|
+
this.status = 'Audio file loaded.';
|
|
15733
|
+
let clip = null;
|
|
15734
|
+
this.recordingFile = value;
|
|
15735
|
+
if (this.recordingFile) {
|
|
15736
|
+
let ab = this.recordingFile.audioDataHolder;
|
|
15737
|
+
if (ab) {
|
|
15738
|
+
clip = new AudioClip(ab);
|
|
15739
|
+
let esffsr = null;
|
|
15740
|
+
let eeffsr = null;
|
|
15741
|
+
let esr = null;
|
|
15742
|
+
if (clip.audioDataHolder != null) {
|
|
15743
|
+
esr = ab.sampleRate;
|
|
15744
|
+
if (esr != null) {
|
|
15745
|
+
esffsr = RecordingFileUtil.editStartFrameForSampleRate(this.recordingFile, esr);
|
|
15746
|
+
eeffsr = RecordingFileUtil.editEndFrameForSampleRate(this.recordingFile, esr);
|
|
15710
15747
|
}
|
|
15711
|
-
|
|
15712
|
-
|
|
15713
|
-
|
|
15714
|
-
|
|
15748
|
+
let sel = null;
|
|
15749
|
+
if (esffsr != null) {
|
|
15750
|
+
if (eeffsr != null) {
|
|
15751
|
+
sel = new Selection(ab.sampleRate, esffsr, eeffsr);
|
|
15752
|
+
}
|
|
15753
|
+
else {
|
|
15754
|
+
//let ch0 = ab.getChannelData(0);
|
|
15755
|
+
let frameLength = ab.frameLen;
|
|
15756
|
+
sel = new Selection(esr, esffsr, frameLength);
|
|
15757
|
+
}
|
|
15715
15758
|
}
|
|
15759
|
+
else if (eeffsr != null) {
|
|
15760
|
+
sel = new Selection(esr, 0, eeffsr);
|
|
15761
|
+
}
|
|
15762
|
+
clip.selection = sel;
|
|
15716
15763
|
}
|
|
15717
|
-
else if (eeffsr != null) {
|
|
15718
|
-
sel = new Selection(esr, 0, eeffsr);
|
|
15719
|
-
}
|
|
15720
|
-
clip.selection = sel;
|
|
15721
15764
|
}
|
|
15722
15765
|
}
|
|
15766
|
+
this.audioClip = clip;
|
|
15767
|
+
this.loadedRecfile();
|
|
15768
|
+
}, error: error1 => {
|
|
15769
|
+
this.audioFetching = false;
|
|
15770
|
+
this.status = 'Error loading audio file!';
|
|
15723
15771
|
}
|
|
15724
|
-
this.audioClip = clip;
|
|
15725
|
-
this.loadedRecfile();
|
|
15726
|
-
}, error1 => {
|
|
15727
|
-
this.audioFetching = false;
|
|
15728
|
-
this.status = 'Error loading audio file!';
|
|
15729
15772
|
});
|
|
15730
15773
|
}
|
|
15731
15774
|
}
|
|
@@ -15753,7 +15796,7 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
|
|
|
15753
15796
|
this.lastAction.disabled = (this.posInList == null || itemCnt == null || this.posInList >= itemCnt - 1);
|
|
15754
15797
|
}
|
|
15755
15798
|
loadSession(sessionId) {
|
|
15756
|
-
// load session and recording file
|
|
15799
|
+
// load session and recording file metadata only when on init and when session changes
|
|
15757
15800
|
if (sessionId != this.sessionId) {
|
|
15758
15801
|
// tell UI that we are working...
|
|
15759
15802
|
this.naviInfoLoading = true;
|
|
@@ -15791,7 +15834,7 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
|
|
|
15791
15834
|
else {
|
|
15792
15835
|
// rec file with itemcode already exists, add (push) this version ...
|
|
15793
15836
|
exRfsForIc.push(rfd);
|
|
15794
|
-
//
|
|
15837
|
+
// ... and sort latest version (highest version number) to lowest index
|
|
15795
15838
|
exRfsForIc.sort((rfd1, rfd2) => {
|
|
15796
15839
|
return rfd2.version - rfd1.version;
|
|
15797
15840
|
});
|
|
@@ -15845,8 +15888,8 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
|
|
|
15845
15888
|
}
|
|
15846
15889
|
}
|
|
15847
15890
|
}
|
|
15848
|
-
RecordingFileViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
15849
|
-
RecordingFileViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
15891
|
+
RecordingFileViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", 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 });
|
|
15892
|
+
RecordingFileViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingFileViewComponent, selector: "app-audiodisplayplayer", viewQueries: [{ propertyName: "ac", first: true, predicate: AudioDisplayScrollPane, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
15850
15893
|
|
|
15851
15894
|
<audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
|
|
15852
15895
|
<div class="ctrlview">
|
|
@@ -15864,7 +15907,7 @@ RecordingFileViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
15864
15907
|
<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>
|
|
15865
15908
|
</div>
|
|
15866
15909
|
`, 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"] }] });
|
|
15867
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
15910
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileViewComponent, decorators: [{
|
|
15868
15911
|
type: Component,
|
|
15869
15912
|
args: [{ selector: 'app-audiodisplayplayer', template: `
|
|
15870
15913
|
|
|
@@ -15884,7 +15927,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
15884
15927
|
<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>
|
|
15885
15928
|
</div>
|
|
15886
15929
|
`, 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"] }]
|
|
15887
|
-
}], ctorParameters: function () { return [{ type: RecordingFileService }, { type: RecordingService }, { type: SessionService }, { type:
|
|
15930
|
+
}], ctorParameters: function () { return [{ 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: [{
|
|
15888
15931
|
type: ViewChild,
|
|
15889
15932
|
args: [AudioDisplayScrollPane]
|
|
15890
15933
|
}] } });
|
|
@@ -15949,28 +15992,29 @@ class RecordingFileUI extends RecordingFileViewComponent {
|
|
|
15949
15992
|
sf = s.startFrame;
|
|
15950
15993
|
ef = s.endFrame;
|
|
15951
15994
|
}
|
|
15952
|
-
this.recordingFileService.saveEditSelection(this.recordingFile.recordingFileId, sr, sf, ef).subscribe((value) => {
|
|
15953
|
-
|
|
15954
|
-
|
|
15955
|
-
|
|
15956
|
-
|
|
15957
|
-
|
|
15958
|
-
|
|
15959
|
-
|
|
15960
|
-
|
|
15961
|
-
|
|
15962
|
-
|
|
15963
|
-
|
|
15964
|
-
|
|
15965
|
-
|
|
15966
|
-
|
|
15995
|
+
this.recordingFileService.saveEditSelection(this.recordingFile.recordingFileId, sr, sf, ef).subscribe({ next: (value) => { },
|
|
15996
|
+
error: () => {
|
|
15997
|
+
this.dialog.open(MessageDialog, {
|
|
15998
|
+
data: {
|
|
15999
|
+
type: 'error',
|
|
16000
|
+
title: 'Save selection edit error',
|
|
16001
|
+
msg: "Could not save edit selection to WikiSpeech server!",
|
|
16002
|
+
advice: "Please check network connection and server state."
|
|
16003
|
+
}
|
|
16004
|
+
});
|
|
16005
|
+
}, complete: () => {
|
|
16006
|
+
// Or use returned selection value from server?
|
|
16007
|
+
this.savedEditSelection = s;
|
|
16008
|
+
this.editSaved = true;
|
|
16009
|
+
this.snackBar.open('Selection edit saved successfully.', 'OK', { duration: 1500 });
|
|
16010
|
+
}
|
|
15967
16011
|
});
|
|
15968
16012
|
}
|
|
15969
16013
|
}
|
|
15970
16014
|
}
|
|
15971
16015
|
}
|
|
15972
|
-
RecordingFileUI.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
15973
|
-
RecordingFileUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
16016
|
+
RecordingFileUI.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", 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 });
|
|
16017
|
+
RecordingFileUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingFileUI, selector: "app-audiodisplayplayer", usesInheritance: true, ngImport: i0, template: `
|
|
15974
16018
|
<h1>Recording file editing</h1>
|
|
15975
16019
|
<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>
|
|
15976
16020
|
|
|
@@ -15991,7 +16035,7 @@ RecordingFileUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
|
|
|
15991
16035
|
|
|
15992
16036
|
<button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
|
|
15993
16037
|
`, 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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { 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"] }] });
|
|
15994
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
16038
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileUI, decorators: [{
|
|
15995
16039
|
type: Component,
|
|
15996
16040
|
args: [{ selector: 'app-audiodisplayplayer', template: `
|
|
15997
16041
|
<h1>Recording file editing</h1>
|
|
@@ -16014,7 +16058,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
16014
16058
|
|
|
16015
16059
|
<button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
|
|
16016
16060
|
`, 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"] }]
|
|
16017
|
-
}], ctorParameters: function () { return [{ type: RecordingFileService }, { type: RecordingService }, { type: SessionService }, { type:
|
|
16061
|
+
}], ctorParameters: function () { return [{ 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 }]; } });
|
|
16018
16062
|
|
|
16019
16063
|
class MediaUtils {
|
|
16020
16064
|
static toMediaTime(timeInSeconds) {
|
|
@@ -16106,8 +16150,8 @@ class RecordingList {
|
|
|
16106
16150
|
return cached;
|
|
16107
16151
|
}
|
|
16108
16152
|
}
|
|
16109
|
-
RecordingList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
16110
|
-
RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
16153
|
+
RecordingList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16154
|
+
RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingList, selector: "app-recordinglist", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, ngImport: i0, template: `
|
|
16111
16155
|
<mat-card>
|
|
16112
16156
|
<mat-card-header>
|
|
16113
16157
|
<h2>Recording list</h2>
|
|
@@ -16151,8 +16195,8 @@ RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
16151
16195
|
</mat-card-content>
|
|
16152
16196
|
</mat-card>
|
|
16153
16197
|
|
|
16154
|
-
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-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%}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i4$
|
|
16155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
16198
|
+
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-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%}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { 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: ["sticky", "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" }] });
|
|
16199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingList, decorators: [{
|
|
16156
16200
|
type: Component,
|
|
16157
16201
|
args: [{ selector: 'app-recordinglist', template: `
|
|
16158
16202
|
<mat-card>
|
|
@@ -16232,8 +16276,8 @@ class RecorderCombiPane extends ResponsiveComponent {
|
|
|
16232
16276
|
this.recordingListComp.selectTop();
|
|
16233
16277
|
}
|
|
16234
16278
|
}
|
|
16235
|
-
RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
16236
|
-
RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
16279
|
+
RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [{ token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
16280
|
+
RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecorderCombiPane, 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: `
|
|
16237
16281
|
<div class="scrollList">
|
|
16238
16282
|
<app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
|
|
16239
16283
|
</div>
|
|
@@ -16246,7 +16290,7 @@ RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16246
16290
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
16247
16291
|
</div>
|
|
16248
16292
|
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-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%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;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"] }] });
|
|
16249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
16293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, decorators: [{
|
|
16250
16294
|
type: Component,
|
|
16251
16295
|
args: [{ selector: 'app-recordercombipane', template: `
|
|
16252
16296
|
<div class="scrollList">
|
|
@@ -16261,7 +16305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
16261
16305
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
16262
16306
|
</div>
|
|
16263
16307
|
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-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%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;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"] }]
|
|
16264
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
16308
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }]; }, propDecorators: { recordingListComp: [{
|
|
16265
16309
|
type: ViewChild,
|
|
16266
16310
|
args: [RecordingList]
|
|
16267
16311
|
}], selectDisabled: [{
|
|
@@ -16288,11 +16332,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
16288
16332
|
}] } });
|
|
16289
16333
|
|
|
16290
16334
|
class AudioRecorder extends BasicRecorder {
|
|
16291
|
-
constructor(bpo, changeDetectorRef, renderer,
|
|
16335
|
+
constructor(bpo, changeDetectorRef, renderer, dialog, sessionService, recFileService, uploader, config) {
|
|
16292
16336
|
super(bpo, changeDetectorRef, dialog, sessionService, uploader, config);
|
|
16293
16337
|
this.bpo = bpo;
|
|
16294
16338
|
this.renderer = renderer;
|
|
16295
|
-
this.route = route;
|
|
16296
16339
|
this.recFileService = recFileService;
|
|
16297
16340
|
this.uploader = uploader;
|
|
16298
16341
|
this._project = null;
|
|
@@ -17200,8 +17243,8 @@ class AudioRecorder extends BasicRecorder {
|
|
|
17200
17243
|
}
|
|
17201
17244
|
}
|
|
17202
17245
|
}
|
|
17203
|
-
AudioRecorder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
17204
|
-
AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
17246
|
+
AudioRecorder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", 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 });
|
|
17247
|
+
AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioRecorder, 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: `
|
|
17205
17248
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
17206
17249
|
<app-warningbar [show]="isDefaultAudioTestSession()"
|
|
17207
17250
|
warningText="This test uses default audio device! Regular sessions may require a particular audio device (microphone)!"></app-warningbar>
|
|
@@ -17260,7 +17303,7 @@ AudioRecorder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
17260
17303
|
</div>
|
|
17261
17304
|
</div>
|
|
17262
17305
|
`, isInline: true, styles: [":host{flex:2;background:lightgrey;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:darkgray}\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{min-width:70px;min-height:50px;font-size:50px;border-radius:20px}\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[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { 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"] }] });
|
|
17263
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
17306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioRecorder, decorators: [{
|
|
17264
17307
|
type: Component,
|
|
17265
17308
|
args: [{ selector: 'app-audiorecorder', providers: [SessionService], template: `
|
|
17266
17309
|
<app-warningbar [show]="isTestSession()" warningText="Test recording only!"></app-warningbar>
|
|
@@ -17321,7 +17364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
17321
17364
|
</div>
|
|
17322
17365
|
</div>
|
|
17323
17366
|
`, styles: [":host{flex:2;background:lightgrey;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:darkgray}\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{min-width:70px;min-height:50px;font-size:50px;border-radius:20px}\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"] }]
|
|
17324
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
17367
|
+
}], ctorParameters: function () { return [{ type: i1$2.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1$3.MatDialog }, { type: SessionService }, { type: RecordingService }, { type: SpeechRecorderUploader }, { type: SpeechRecorderConfig, decorators: [{
|
|
17325
17368
|
type: Inject,
|
|
17326
17369
|
args: [SPEECHRECORDER_CONFIG]
|
|
17327
17370
|
}] }]; }, propDecorators: { projectName: [{
|
|
@@ -17366,7 +17409,7 @@ class AudioRecorderComponent extends RecorderComponent {
|
|
|
17366
17409
|
}
|
|
17367
17410
|
else {
|
|
17368
17411
|
// all this attempts to customize the message do not work anymore (for security reasons)!!
|
|
17369
|
-
|
|
17412
|
+
const message = "Please do not leave the page, until all recordings are uploaded!";
|
|
17370
17413
|
alert(message);
|
|
17371
17414
|
e = e || window.event;
|
|
17372
17415
|
if (e) {
|
|
@@ -17466,16 +17509,16 @@ class AudioRecorderComponent extends RecorderComponent {
|
|
|
17466
17509
|
return this.dataSaved && !this.ar.isActive();
|
|
17467
17510
|
}
|
|
17468
17511
|
}
|
|
17469
|
-
AudioRecorderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
17470
|
-
AudioRecorderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
17512
|
+
AudioRecorderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", 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 });
|
|
17513
|
+
AudioRecorderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AudioRecorderComponent, selector: "app-audiorecorder-comp", providers: [SessionService], viewQueries: [{ propertyName: "ar", first: true, predicate: AudioRecorder, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
17471
17514
|
<app-audiorecorder [projectName]="_project?.name" [dataSaved]="dataSaved"></app-audiorecorder>
|
|
17472
17515
|
`, 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"] }] });
|
|
17473
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
17516
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AudioRecorderComponent, decorators: [{
|
|
17474
17517
|
type: Component,
|
|
17475
17518
|
args: [{ selector: 'app-audiorecorder-comp', providers: [SessionService], template: `
|
|
17476
17519
|
<app-audiorecorder [projectName]="_project?.name" [dataSaved]="dataSaved"></app-audiorecorder>
|
|
17477
17520
|
`, styles: [":host{flex:2;display:flex;height:100%;flex-direction:column;min-height:0}\n"] }]
|
|
17478
|
-
}], ctorParameters: function () { return [{ type:
|
|
17521
|
+
}], ctorParameters: function () { return [{ type: i4$2.ActivatedRoute }, { type: i4$2.Router }, { type: i0.ChangeDetectorRef }, { type: SessionService }, { type: ProjectService }, { type: SpeechRecorderUploader }]; }, propDecorators: { ar: [{
|
|
17479
17522
|
type: ViewChild,
|
|
17480
17523
|
args: [AudioRecorder, { static: true }]
|
|
17481
17524
|
}] } });
|
|
@@ -17509,11 +17552,11 @@ class SpeechrecorderngModule {
|
|
|
17509
17552
|
};
|
|
17510
17553
|
}
|
|
17511
17554
|
}
|
|
17512
|
-
SpeechrecorderngModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
17513
|
-
SpeechrecorderngModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
17514
|
-
ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder], imports: [
|
|
17515
|
-
SpeechrecorderngModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
17516
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
17555
|
+
SpeechrecorderngModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17556
|
+
SpeechrecorderngModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
17557
|
+
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, HttpClientModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule], exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder] });
|
|
17558
|
+
SpeechrecorderngModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, HttpClientModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule] });
|
|
17559
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SpeechrecorderngModule, decorators: [{
|
|
17517
17560
|
type: NgModule,
|
|
17518
17561
|
args: [{
|
|
17519
17562
|
declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
@@ -17524,7 +17567,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
17524
17567
|
}]
|
|
17525
17568
|
}] });
|
|
17526
17569
|
|
|
17527
|
-
const VERSION = '3.4.
|
|
17570
|
+
const VERSION = '3.4.5';
|
|
17528
17571
|
|
|
17529
17572
|
/*
|
|
17530
17573
|
* Public API Surface of speechrecorderng
|