speechrecorderng 2.24.2 → 2.25.2
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/audio/audio_display.mjs +4 -4
- package/esm2020/lib/audio/audio_player.mjs +4 -4
- package/esm2020/lib/audio/capture/capture.mjs +1 -1
- package/esm2020/lib/audio/io/stream.mjs +41 -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 +4 -4
- 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/io/stream.mjs +10 -1
- package/esm2020/lib/recorder_component.mjs +1 -1
- package/esm2020/lib/speechrecorder/project/project.mjs +1 -1
- package/esm2020/lib/speechrecorder/project/project.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/script/script.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +122 -110
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +179 -14
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +46 -22
- 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 +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/session.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/session_finished_dialog.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +94 -61
- package/esm2020/lib/speechrecorder/session/warning_bar.mjs +4 -4
- package/esm2020/lib/speechrecorder/spruploader.mjs +4 -4
- package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
- package/esm2020/lib/speechrecorderng.component.mjs +18 -5
- package/esm2020/lib/speechrecorderng.module.mjs +8 -8
- 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 +7 -7
- package/esm2020/lib/utils/scrollIntoViewToBottom.mjs +4 -4
- package/esm2020/lib/utils/wake_lock.mjs +114 -0
- package/esm2020/lib/utils/wake_lock_media.mjs +2 -0
- package/fesm2015/speechrecorderng.mjs +811 -404
- package/fesm2015/speechrecorderng.mjs.map +1 -1
- package/fesm2020/speechrecorderng.mjs +805 -404
- package/fesm2020/speechrecorderng.mjs.map +1 -1
- package/lib/audio/io/stream.d.ts +13 -0
- package/lib/io/stream.d.ts +3 -0
- package/lib/recorder_component.d.ts +1 -0
- package/lib/speechrecorder/project/project.d.ts +1 -0
- package/lib/speechrecorder/session/audiorecorder.d.ts +11 -11
- package/lib/speechrecorder/session/basicrecorder.d.ts +44 -4
- package/lib/speechrecorder/session/controlpanel.d.ts +7 -0
- package/lib/speechrecorder/session/sessionmanager.d.ts +13 -10
- package/lib/speechrecorderng.component.d.ts +1 -0
- package/lib/speechrecorderng.module.d.ts +1 -1
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/utils/wake_lock.d.ts +23 -0
- package/lib/utils/wake_lock_media.d.ts +1 -0
- package/package.json +1 -1
package/lib/audio/io/stream.d.ts
CHANGED
|
@@ -13,3 +13,16 @@ export declare class SequenceAudioFloat32ChunkerOutStream extends Float32ArrayCh
|
|
|
13
13
|
setFormat(channels: number, sampleRate: number): void;
|
|
14
14
|
nextStream(): void;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Streams a SequenceAudioFloat32OutStream to multiple streams
|
|
18
|
+
*/
|
|
19
|
+
export declare class SequenceAudioFloat32OutStreamMultiplier implements SequenceAudioFloat32OutStream {
|
|
20
|
+
private _sequenceAudioFloat32OutStreams;
|
|
21
|
+
constructor();
|
|
22
|
+
get sequenceAudioFloat32OutStreams(): Array<SequenceAudioFloat32OutStream>;
|
|
23
|
+
setFormat(channels: number, sampleRate: number): void;
|
|
24
|
+
nextStream(): void;
|
|
25
|
+
close(): void;
|
|
26
|
+
flush(): void;
|
|
27
|
+
write(buffers: Array<Float32Array>): number;
|
|
28
|
+
}
|
package/lib/io/stream.d.ts
CHANGED
|
@@ -14,7 +14,10 @@ export declare class Float32ArrayChunkerOutStream implements Float32ArrayOutStre
|
|
|
14
14
|
constructor(outStream: Float32ArrayOutStream);
|
|
15
15
|
private createBuffers;
|
|
16
16
|
set chunkSize(chunkSize: number);
|
|
17
|
+
get chunkSize(): number;
|
|
17
18
|
set channels(channels: number);
|
|
19
|
+
get channels(): number;
|
|
20
|
+
available(): number;
|
|
18
21
|
write(buffers: Array<Float32Array>): number;
|
|
19
22
|
flush(): void;
|
|
20
23
|
close(): void;
|
|
@@ -40,6 +40,7 @@ export interface Project {
|
|
|
40
40
|
mediaCaptureFormat?: MediaCaptureFormat;
|
|
41
41
|
autoGainControlConfigs?: Array<AutoGainControlConfig>;
|
|
42
42
|
audioDevices?: Array<AudioDevice>;
|
|
43
|
+
chunkedRecording?: boolean;
|
|
43
44
|
}
|
|
44
45
|
export declare class ProjectUtil {
|
|
45
46
|
static readonly DEFAULT_AUDIO_CHANNEL_COUNT = 2;
|
|
@@ -21,9 +21,10 @@ import * as i0 from "@angular/core";
|
|
|
21
21
|
export declare const enum Status {
|
|
22
22
|
BLOCKED = 0,
|
|
23
23
|
IDLE = 1,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
STARTING = 2,
|
|
25
|
+
RECORDING = 3,
|
|
26
|
+
STOPPING_STOP = 4,
|
|
27
|
+
ERROR = 5
|
|
27
28
|
}
|
|
28
29
|
export declare class Item {
|
|
29
30
|
promptAsString: string;
|
|
@@ -36,10 +37,9 @@ export declare class AudioRecorder extends BasicRecorder implements OnInit, Afte
|
|
|
36
37
|
private renderer;
|
|
37
38
|
private route;
|
|
38
39
|
dialog: MatDialog;
|
|
39
|
-
private projectService;
|
|
40
40
|
protected sessionService: SessionService;
|
|
41
41
|
private recFileService;
|
|
42
|
-
|
|
42
|
+
protected uploader: SpeechRecorderUploader;
|
|
43
43
|
config?: SpeechRecorderConfig | undefined;
|
|
44
44
|
_project: Project | undefined | null;
|
|
45
45
|
projectName: string | undefined | null;
|
|
@@ -49,7 +49,6 @@ export declare class AudioRecorder extends BasicRecorder implements OnInit, Afte
|
|
|
49
49
|
recorderCombiPane: RecorderCombiPane;
|
|
50
50
|
liveLevelDisplay: LevelBar;
|
|
51
51
|
dataSaved: boolean;
|
|
52
|
-
private startedDate;
|
|
53
52
|
private maxRecTimerId;
|
|
54
53
|
private maxRecTimerRunning;
|
|
55
54
|
private updateTimerId;
|
|
@@ -59,7 +58,7 @@ export declare class AudioRecorder extends BasicRecorder implements OnInit, Afte
|
|
|
59
58
|
private _promptIndex;
|
|
60
59
|
private _displayRecFile;
|
|
61
60
|
private displayRecFileVersion;
|
|
62
|
-
constructor(changeDetectorRef: ChangeDetectorRef, renderer: Renderer2, route: ActivatedRoute, dialog: MatDialog,
|
|
61
|
+
constructor(changeDetectorRef: ChangeDetectorRef, renderer: Renderer2, route: ActivatedRoute, dialog: MatDialog, sessionService: SessionService, recFileService: RecordingService, uploader: SpeechRecorderUploader, config?: SpeechRecorderConfig | undefined);
|
|
63
62
|
ngAfterViewInit(): void;
|
|
64
63
|
ready(): boolean;
|
|
65
64
|
ngOnDestroy(): void;
|
|
@@ -92,6 +91,7 @@ export declare class AudioRecorder extends BasicRecorder implements OnInit, Afte
|
|
|
92
91
|
start(): void;
|
|
93
92
|
isRecording(): boolean;
|
|
94
93
|
isActive(): boolean;
|
|
94
|
+
updateWakeLock(dataSaved?: boolean): void;
|
|
95
95
|
private updateNavigationActions;
|
|
96
96
|
enableStartUserGesture(): void;
|
|
97
97
|
enableNavigation(): void;
|
|
@@ -101,13 +101,13 @@ export declare class AudioRecorder extends BasicRecorder implements OnInit, Afte
|
|
|
101
101
|
stopRecording(): void;
|
|
102
102
|
stopRecordingMaxRec(): void;
|
|
103
103
|
stopped(): void;
|
|
104
|
-
postRecording(wavFile: Uint8Array, recUrl: string): void;
|
|
105
104
|
postRecordingMultipart(wavFile: Uint8Array, uuid: string | null, sessionId: string | number | null, startedDate: Date | null | undefined, recUrl: string): void;
|
|
105
|
+
postChunkAudioBuffer(audioBuffer: AudioBuffer, chunkIdx: number): void;
|
|
106
106
|
stop(): void;
|
|
107
107
|
private updateControlPlaybackPosition;
|
|
108
108
|
audioPlayerUpdate(e: AudioPlayerEvent): void;
|
|
109
109
|
static ɵfac: i0.ɵɵFactoryDeclaration<AudioRecorder, never>;
|
|
110
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AudioRecorder, "app-audiorecorder", never, { "
|
|
110
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AudioRecorder, "app-audiorecorder", never, { "projectName": "projectName"; "dataSaved": "dataSaved"; }, {}, never, never>;
|
|
111
111
|
}
|
|
112
112
|
export declare class AudioRecorderComponent extends RecorderComponent implements OnInit, OnDestroy, AfterViewInit, ReadyStateProvider {
|
|
113
113
|
protected injector: Injector;
|
|
@@ -116,7 +116,6 @@ export declare class AudioRecorderComponent extends RecorderComponent implements
|
|
|
116
116
|
private changeDetectorRef;
|
|
117
117
|
private sessionService;
|
|
118
118
|
private projectService;
|
|
119
|
-
private recFilesService;
|
|
120
119
|
protected uploader: SpeechRecorderUploader;
|
|
121
120
|
mode: Mode;
|
|
122
121
|
controlAudioPlayer: AudioPlayer;
|
|
@@ -125,10 +124,11 @@ export declare class AudioRecorderComponent extends RecorderComponent implements
|
|
|
125
124
|
sessionId: string;
|
|
126
125
|
session: Session;
|
|
127
126
|
ar: AudioRecorder;
|
|
128
|
-
constructor(injector: Injector, route: ActivatedRoute, router: Router, changeDetectorRef: ChangeDetectorRef, sessionService: SessionService, projectService: ProjectService,
|
|
127
|
+
constructor(injector: Injector, route: ActivatedRoute, router: Router, changeDetectorRef: ChangeDetectorRef, sessionService: SessionService, projectService: ProjectService, uploader: SpeechRecorderUploader);
|
|
129
128
|
ngOnInit(): void;
|
|
130
129
|
ngAfterViewInit(): void;
|
|
131
130
|
ngOnDestroy(): void;
|
|
131
|
+
get screenLocked(): boolean;
|
|
132
132
|
fetchSession(sessionId: string): void;
|
|
133
133
|
uploadUpdate(ue: UploaderStatusChangeEvent): void;
|
|
134
134
|
ready(): boolean;
|
|
@@ -10,19 +10,48 @@ import { AudioPlayer } from "../../audio/playback/player";
|
|
|
10
10
|
import { Subscription } from "rxjs";
|
|
11
11
|
import { AudioClip } from "../../audio/persistor";
|
|
12
12
|
import { Action } from "../../action/action";
|
|
13
|
-
import
|
|
13
|
+
import { SpeechRecorderConfig } from "../../spr.config";
|
|
14
|
+
import { SpeechRecorderUploader } from "../spruploader";
|
|
15
|
+
import { SequenceAudioFloat32OutStream } from "../../audio/io/stream";
|
|
16
|
+
import { SprRecordingFile } from "../recording";
|
|
14
17
|
export declare const FORCE_REQUEST_AUDIO_PERMISSIONS = false;
|
|
15
18
|
export declare const RECFILE_API_CTX = "recfile";
|
|
16
19
|
export declare const MAX_RECORDING_TIME_MS: number;
|
|
17
20
|
export declare const LEVEL_BAR_INTERVALL_SECONDS = 0.1;
|
|
18
|
-
export declare
|
|
21
|
+
export declare const NOSLEEP_VIDEO_TITLE = "No Sleep";
|
|
22
|
+
export interface ChunkAudioBufferReceiver {
|
|
23
|
+
postAudioStreamStart(): void;
|
|
24
|
+
postChunkAudioBuffer(audioBuffer: AudioBuffer, chunkIdx: number): void;
|
|
25
|
+
postAudioStreamEnd(chunkCount: number): void;
|
|
26
|
+
}
|
|
27
|
+
export declare class ChunkManager implements SequenceAudioFloat32OutStream {
|
|
28
|
+
private chunkAudioBufferReceiver;
|
|
29
|
+
set recordingFile(value: SprRecordingFile);
|
|
30
|
+
private channels;
|
|
31
|
+
private sampleRate;
|
|
32
|
+
private _rf;
|
|
33
|
+
private chunkIdx;
|
|
34
|
+
constructor(chunkAudioBufferReceiver: ChunkAudioBufferReceiver);
|
|
35
|
+
close(): void;
|
|
36
|
+
flush(): void;
|
|
37
|
+
nextStream(): void;
|
|
38
|
+
setFormat(channels: number, sampleRate: number): void;
|
|
39
|
+
write(buffers: Array<Float32Array>): number;
|
|
40
|
+
}
|
|
41
|
+
export declare abstract class BasicRecorder {
|
|
19
42
|
dialog: MatDialog;
|
|
20
43
|
protected sessionService: SessionService;
|
|
44
|
+
protected uploader: SpeechRecorderUploader;
|
|
45
|
+
config?: SpeechRecorderConfig | undefined;
|
|
46
|
+
get uploadChunkSizeSeconds(): number | null;
|
|
47
|
+
set uploadChunkSizeSeconds(value: number | null);
|
|
48
|
+
static readonly DEFAULT_CHUNK_SIZE_SECONDS = 30;
|
|
21
49
|
protected userAgent: UserAgent;
|
|
22
50
|
statusMsg: string;
|
|
23
51
|
statusAlertType: string;
|
|
24
52
|
statusWaiting: boolean;
|
|
25
53
|
readonly: boolean;
|
|
54
|
+
protected rfUuid: string | null;
|
|
26
55
|
processingRecording: boolean;
|
|
27
56
|
ac: AudioCapture | null;
|
|
28
57
|
protected _wakeLock: boolean;
|
|
@@ -34,6 +63,7 @@ export declare class BasicRecorder {
|
|
|
34
63
|
_session: Session | null;
|
|
35
64
|
transportActions: TransportActions;
|
|
36
65
|
playStartAction: Action<void>;
|
|
66
|
+
protected startedDate: Date | null;
|
|
37
67
|
uploadProgress: number;
|
|
38
68
|
uploadStatus: string;
|
|
39
69
|
audioSignalCollapsed: boolean;
|
|
@@ -46,19 +76,29 @@ export declare class BasicRecorder {
|
|
|
46
76
|
protected audioFetchSubscription: Subscription | null;
|
|
47
77
|
protected destroyed: boolean;
|
|
48
78
|
protected navigationDisabled: boolean;
|
|
49
|
-
|
|
50
|
-
|
|
79
|
+
private _uploadChunkSizeSeconds;
|
|
80
|
+
protected _screenLocked: boolean;
|
|
81
|
+
private wakeLockManager?;
|
|
82
|
+
constructor(dialog: MatDialog, sessionService: SessionService, uploader: SpeechRecorderUploader, config?: SpeechRecorderConfig | undefined);
|
|
51
83
|
get wakeLock(): boolean;
|
|
52
84
|
set wakeLock(value: boolean);
|
|
53
85
|
enableWakeLockCond(): void;
|
|
54
86
|
disableWakeLockCond(): void;
|
|
87
|
+
get screenLocked(): boolean;
|
|
55
88
|
set audioDevices(audioDevices: Array<AudioDevice> | null | undefined);
|
|
56
89
|
set autoGainControlConfigs(autoGainControlConfigs: Array<AutoGainControlConfig> | null | undefined);
|
|
57
90
|
set channelCount(channelCount: number);
|
|
58
91
|
set session(session: Session | null);
|
|
59
92
|
get session(): Session | null;
|
|
60
93
|
enableStartUserGesture(): void;
|
|
94
|
+
configureStreamCaptureStream(): void;
|
|
61
95
|
start(): void;
|
|
96
|
+
startItem(): void;
|
|
97
|
+
started(): void;
|
|
98
|
+
postRecording(wavFile: Uint8Array, recUrl: string): void;
|
|
99
|
+
postAudioStreamStart(): void;
|
|
100
|
+
abstract postChunkAudioBuffer(audioBuffer: AudioBuffer, chunkIdx: number): void;
|
|
101
|
+
postAudioStreamEnd(chunkCount: number): void;
|
|
62
102
|
closed(): void;
|
|
63
103
|
error(msg?: string, advice?: string): void;
|
|
64
104
|
}
|
|
@@ -60,6 +60,13 @@ export declare class TransportPanel {
|
|
|
60
60
|
static ɵfac: i0.ɵɵFactoryDeclaration<TransportPanel, never>;
|
|
61
61
|
static ɵcmp: i0.ɵɵComponentDeclaration<TransportPanel, "app-sprtransport", never, { "readonly": "readonly"; "actions": "actions"; "navigationEnabled": "navigationEnabled"; "pausingEnabled": "pausingEnabled"; }, {}, never, never>;
|
|
62
62
|
}
|
|
63
|
+
export declare class WakeLockIndicator {
|
|
64
|
+
_screenLocked: boolean;
|
|
65
|
+
constructor();
|
|
66
|
+
set screenLocked(screenLock: boolean);
|
|
67
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WakeLockIndicator, never>;
|
|
68
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WakeLockIndicator, "app-wakelockindicator", never, { "screenLocked": "screenLocked"; }, {}, never, never>;
|
|
69
|
+
}
|
|
63
70
|
export declare class ReadyStateIndicator {
|
|
64
71
|
_ready: boolean;
|
|
65
72
|
hourGlassIconName: string;
|
|
@@ -12,26 +12,27 @@ import { Prompting } from "./prompting";
|
|
|
12
12
|
import { RecordingService } from "../recordings/recordings.service";
|
|
13
13
|
import { Item } from "./item";
|
|
14
14
|
import { LevelBar } from "../../audio/ui/livelevel";
|
|
15
|
-
import { BasicRecorder } from "./basicrecorder";
|
|
15
|
+
import { BasicRecorder, ChunkAudioBufferReceiver } from "./basicrecorder";
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
export declare const enum Status {
|
|
18
18
|
BLOCKED = 0,
|
|
19
19
|
IDLE = 1,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
STARTING = 2,
|
|
21
|
+
PRE_RECORDING = 3,
|
|
22
|
+
RECORDING = 4,
|
|
23
|
+
POST_REC_STOP = 5,
|
|
24
|
+
POST_REC_PAUSE = 6,
|
|
25
|
+
STOPPING_STOP = 7,
|
|
26
|
+
STOPPING_PAUSE = 8,
|
|
27
|
+
ERROR = 9
|
|
27
28
|
}
|
|
28
|
-
export declare class SessionManager extends BasicRecorder implements AfterViewInit, OnDestroy, AudioCaptureListener {
|
|
29
|
+
export declare class SessionManager extends BasicRecorder implements AfterViewInit, OnDestroy, AudioCaptureListener, ChunkAudioBufferReceiver {
|
|
29
30
|
private changeDetectorRef;
|
|
30
31
|
private renderer;
|
|
31
32
|
dialog: MatDialog;
|
|
32
33
|
protected sessionService: SessionService;
|
|
33
34
|
private recFileService;
|
|
34
|
-
|
|
35
|
+
protected uploader: SpeechRecorderUploader;
|
|
35
36
|
config?: SpeechRecorderConfig | undefined;
|
|
36
37
|
projectName: string | undefined;
|
|
37
38
|
enableUploadRecordings: boolean;
|
|
@@ -71,6 +72,7 @@ export declare class SessionManager extends BasicRecorder implements AfterViewIn
|
|
|
71
72
|
private init;
|
|
72
73
|
onKeyPress(ke: KeyboardEvent): void;
|
|
73
74
|
onKeyDown(ke: KeyboardEvent): void;
|
|
75
|
+
updateWakeLock(dataSaved?: boolean): void;
|
|
74
76
|
progressPercentValue(): number;
|
|
75
77
|
isTestSession(): boolean;
|
|
76
78
|
isDefaultAudioTestSession(): boolean;
|
|
@@ -112,6 +114,7 @@ export declare class SessionManager extends BasicRecorder implements AfterViewIn
|
|
|
112
114
|
addRecordingFileByDescriptor(rfd: RecordingFileDescriptorImpl): void;
|
|
113
115
|
addRecordingFileByPromptIndex(promptIndex: number, rf: SprRecordingFile): void;
|
|
114
116
|
stopped(): void;
|
|
117
|
+
postChunkAudioBuffer(audioBuffer: AudioBuffer, chunkIdx: number): void;
|
|
115
118
|
postRecording(wavFile: Uint8Array, recUrl: string): void;
|
|
116
119
|
stop(): void;
|
|
117
120
|
private updateControlPlaybackPosition;
|
|
@@ -40,6 +40,7 @@ export declare class SpeechrecorderngComponent extends RecorderComponent impleme
|
|
|
40
40
|
fetchSession(sessionId: string): void;
|
|
41
41
|
fetchScript(sess: Session): void;
|
|
42
42
|
fetchRecordings(sess: Session, script: Script): void;
|
|
43
|
+
get screenLocked(): boolean;
|
|
43
44
|
private startSession;
|
|
44
45
|
setSession(session: any): void;
|
|
45
46
|
ready(): boolean;
|
|
@@ -51,6 +51,6 @@ export declare const SPR_ROUTES: Routes;
|
|
|
51
51
|
export declare class SpeechrecorderngModule {
|
|
52
52
|
static forRoot(config: SpeechRecorderConfig): ModuleWithProviders<SpeechrecorderngModule>;
|
|
53
53
|
static ɵfac: i0.ɵɵFactoryDeclaration<SpeechrecorderngModule, never>;
|
|
54
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SpeechrecorderngModule, [typeof i1.AudioSignal, typeof i2.Sonagram, typeof i3.ScrollPaneHorizontal, typeof i4.AudioClipUIContainer, typeof i5.AudioDisplayScrollPane, typeof i6.AudioDisplay, typeof i7.AudioDisplayPlayer, typeof i8.AudioDisplayControl, typeof i9.LevelBar, typeof i10.Progress, typeof i11.SimpleTrafficLight, typeof i12.Recinstructions, typeof i12.Prompter, typeof i12.PromptContainer, typeof i12.PromptingContainer, typeof i12.Prompting, typeof i13.StatusDisplay, typeof i13.ProgressDisplay, typeof i14.RecordingItemDisplay, typeof i14.RecordingItemControls, typeof i13.UploadStatus, typeof i13.TransportPanel, typeof i13.ReadyStateIndicator, typeof i13.ControlPanel, typeof i15.WarningBar, typeof i16.AudioRecorder, typeof i17.SessionManager, typeof i18.MessageDialog, typeof i19.SessionFinishedDialog, typeof i20.SpeechrecorderngComponent, typeof i16.AudioRecorderComponent, typeof i21.RecordingFileViewComponent, typeof i22.RecordingFileUI, typeof i23.ScrollIntoViewDirective, typeof i24.RecordingFileNaviComponent, typeof i25.RecordingFileMetaComponent, typeof i26.RecordingList, typeof i27.RecorderCombiPane, typeof i16.AudioRecorder], [typeof i28.RouterModule, typeof i29.FlexLayoutModule, typeof i30.CommonModule, typeof i31.MatIconModule, typeof i32.MatButtonModule, typeof i33.MatDialogModule, typeof i34.MatProgressBarModule, typeof i35.MatProgressSpinnerModule, typeof i36.MatTooltipModule, typeof i37.HttpClientModule, typeof i38.MatCheckboxModule, typeof i39.MatCardModule, typeof i40.MatDividerModule, typeof i41.MatGridListModule, typeof i42.MatTableModule, typeof i43.MatInputModule, typeof i44.MatSelectModule, typeof i45.MatSnackBarModule], [typeof i18.MessageDialog, typeof i20.SpeechrecorderngComponent, typeof i3.ScrollPaneHorizontal, typeof i4.AudioClipUIContainer, typeof i5.AudioDisplayScrollPane, typeof i6.AudioDisplay, typeof i7.AudioDisplayPlayer, typeof i8.AudioDisplayControl, typeof i9.LevelBar, typeof i16.AudioRecorder]>;
|
|
54
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SpeechrecorderngModule, [typeof i1.AudioSignal, typeof i2.Sonagram, typeof i3.ScrollPaneHorizontal, typeof i4.AudioClipUIContainer, typeof i5.AudioDisplayScrollPane, typeof i6.AudioDisplay, typeof i7.AudioDisplayPlayer, typeof i8.AudioDisplayControl, typeof i9.LevelBar, typeof i10.Progress, typeof i11.SimpleTrafficLight, typeof i12.Recinstructions, typeof i12.Prompter, typeof i12.PromptContainer, typeof i12.PromptingContainer, typeof i12.Prompting, typeof i13.StatusDisplay, typeof i13.ProgressDisplay, typeof i14.RecordingItemDisplay, typeof i14.RecordingItemControls, typeof i13.UploadStatus, typeof i13.TransportPanel, typeof i13.WakeLockIndicator, typeof i13.ReadyStateIndicator, typeof i13.ControlPanel, typeof i15.WarningBar, typeof i16.AudioRecorder, typeof i17.SessionManager, typeof i18.MessageDialog, typeof i19.SessionFinishedDialog, typeof i20.SpeechrecorderngComponent, typeof i16.AudioRecorderComponent, typeof i21.RecordingFileViewComponent, typeof i22.RecordingFileUI, typeof i23.ScrollIntoViewDirective, typeof i24.RecordingFileNaviComponent, typeof i25.RecordingFileMetaComponent, typeof i26.RecordingList, typeof i27.RecorderCombiPane, typeof i16.AudioRecorder], [typeof i28.RouterModule, typeof i29.FlexLayoutModule, typeof i30.CommonModule, typeof i31.MatIconModule, typeof i32.MatButtonModule, typeof i33.MatDialogModule, typeof i34.MatProgressBarModule, typeof i35.MatProgressSpinnerModule, typeof i36.MatTooltipModule, typeof i37.HttpClientModule, typeof i38.MatCheckboxModule, typeof i39.MatCardModule, typeof i40.MatDividerModule, typeof i41.MatGridListModule, typeof i42.MatTableModule, typeof i43.MatInputModule, typeof i44.MatSelectModule, typeof i45.MatSnackBarModule], [typeof i18.MessageDialog, typeof i20.SpeechrecorderngComponent, typeof i3.ScrollPaneHorizontal, typeof i4.AudioClipUIContainer, typeof i5.AudioDisplayScrollPane, typeof i6.AudioDisplay, typeof i7.AudioDisplayPlayer, typeof i8.AudioDisplayControl, typeof i9.LevelBar, typeof i16.AudioRecorder]>;
|
|
55
55
|
static ɵinj: i0.ɵɵInjectorDeclaration<SpeechrecorderngModule>;
|
|
56
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "2.
|
|
1
|
+
export declare const VERSION = "2.25.2";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BehaviorSubject } from "rxjs";
|
|
2
|
+
/**
|
|
3
|
+
* Utility to prevent devices from screen lock.
|
|
4
|
+
* If supported uses the HTML5 wake lock API, if not, plays an invisible video.
|
|
5
|
+
*
|
|
6
|
+
* Note: I've used the GitHub project richtr/nosleep.js for that. The worked in most cases, but failed sometimes on an
|
|
7
|
+
* Android smartphone.
|
|
8
|
+
*/
|
|
9
|
+
export declare class WakeLockManager {
|
|
10
|
+
get behaviorSubject(): BehaviorSubject<boolean>;
|
|
11
|
+
private wakeLockSentinel;
|
|
12
|
+
private mp4VideoElement?;
|
|
13
|
+
private wakeLockApiSupported;
|
|
14
|
+
private wakeLockRetryCount;
|
|
15
|
+
private userAgent?;
|
|
16
|
+
private randomSeekRequired;
|
|
17
|
+
private _behaviorSubject;
|
|
18
|
+
private readonly VIDEO_LENGTH;
|
|
19
|
+
constructor();
|
|
20
|
+
enableWakeLock(): void;
|
|
21
|
+
private startWakeLockVideo;
|
|
22
|
+
disableWakeLock(): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WAKE_LOCK_VIDEO_MP4_URI = "data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAG31tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE1NSByMjkxNyAwYTg0ZDk4IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxOCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTIgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAJ2WIhAA7//73Tr8Cm1TCKgOSVwr2yqQmr/tBF6luwQMZUeHtiyA0IQAAAAtBmiRsQ7/+qZYe8N4CAExhdmM1OC41NC4xMDAAQiAIwRg4AAAACEGeQniF/wMzIRAEYIwcIRAEYIwcAAAACAGeYXRCvwQkIRAEYIwcIRAEYIwcAAAACAGeY2pCvwQlIRAEYIwcIRAEYIwcAAAAEUGaaEmo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AAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAEAAAAAChzdHNjAAAAAAAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAEAAAP8c3RzegAAAAAAAAAAAAAA+gAAAt0AAAAPAAAADAAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABUAAAAOAAAADAAAAAwAAAAVAAAADgAAAAwAAAAMAAAAFQAAAA4AAAAMAAAADAAAABQAAAP0c3RjbwAAAAAAAAD5AAAAMAAAAzMA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AAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAXAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAA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";
|