speechrecorderng 3.6.0 → 3.8.0
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/esm2022/lib/action/action.mjs +73 -0
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer.mjs +163 -163
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_input_stream.mjs +85 -85
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_random_access_stream.mjs +15 -15
- package/esm2022/lib/audio/audio_data_holder.mjs +264 -0
- package/{esm2020 → esm2022}/lib/audio/audio_display.mjs +93 -93
- package/{esm2020 → esm2022}/lib/audio/audio_player.mjs +213 -213
- package/esm2022/lib/audio/capture/capture.mjs +855 -0
- package/esm2022/lib/audio/context.mjs +79 -0
- package/{esm2020 → esm2022}/lib/audio/dsp/level_measure.mjs +515 -515
- package/{esm2020 → esm2022}/lib/audio/format.mjs +16 -16
- package/esm2022/lib/audio/impl/wavformat.mjs +6 -0
- package/{esm2020 → esm2022}/lib/audio/impl/wavreader.mjs +133 -133
- package/esm2022/lib/audio/impl/wavwriter.mjs +105 -0
- package/esm2022/lib/audio/inddb_audio_buffer.mjs +508 -0
- package/{esm2020 → esm2022}/lib/audio/io/stream.mjs +58 -58
- package/esm2022/lib/audio/net_audio_buffer.mjs +293 -0
- package/{esm2020 → esm2022}/lib/audio/persistor.mjs +80 -80
- package/{esm2020 → esm2022}/lib/audio/playback/array_audio_buffer_source_node.mjs +125 -125
- package/esm2022/lib/audio/playback/audio_source_node.mjs +18 -0
- package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +167 -0
- package/{esm2020 → esm2022}/lib/audio/playback/inddb_audio_buffer_source_node.mjs +166 -166
- package/{esm2020 → esm2022}/lib/audio/playback/net_audio_buffer_source_node.mjs +217 -217
- package/esm2022/lib/audio/playback/player.mjs +402 -0
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +347 -0
- package/{esm2020 → esm2022}/lib/audio/ui/audio_display_control.mjs +65 -65
- package/{esm2020 → esm2022}/lib/audio/ui/audio_display_scroll_pane.mjs +139 -139
- package/{esm2020 → esm2022}/lib/audio/ui/audiosignal.mjs +524 -524
- package/{esm2020 → esm2022}/lib/audio/ui/common.mjs +18 -18
- package/esm2022/lib/audio/ui/container.mjs +414 -0
- package/{esm2020 → esm2022}/lib/audio/ui/livelevel.mjs +352 -352
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +11 -0
- package/esm2022/lib/audio/ui/sonagram.mjs +900 -0
- package/esm2022/lib/db/inddb.mjs +120 -0
- package/esm2022/lib/dsp/utils.mjs +48 -0
- package/{esm2020 → esm2022}/lib/io/BinaryReader.mjs +84 -84
- package/esm2022/lib/io/BinaryWriter.mjs +74 -0
- package/{esm2020 → esm2022}/lib/io/stream.mjs +258 -258
- package/{esm2020 → esm2022}/lib/math/2d/geometry.mjs +27 -27
- package/esm2022/lib/math/complex.mjs +58 -0
- package/{esm2020 → esm2022}/lib/math/dft.mjs +195 -195
- package/{esm2020 → esm2022}/lib/media/utils.mjs +13 -13
- package/esm2022/lib/net/uploader.mjs +367 -0
- package/{esm2020 → esm2022}/lib/recorder_component.mjs +64 -64
- package/esm2022/lib/speechrecorder/project/project.mjs +49 -0
- package/esm2022/lib/speechrecorder/project/project.service.mjs +64 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/recording.mjs +123 -123
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +218 -0
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +1014 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/script/script.mjs +114 -114
- package/{esm2020 → esm2022}/lib/speechrecorder/script/script.service.mjs +47 -47
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +1179 -0
- package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +668 -0
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +416 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/item.mjs +29 -29
- package/{esm2020 → esm2022}/lib/speechrecorder/session/progress.mjs +69 -69
- package/{esm2020 → esm2022}/lib/speechrecorder/session/prompting.mjs +571 -571
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recorder_combi_pane.mjs +65 -65
- package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +195 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recording_list.mjs +103 -103
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +63 -63
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +51 -51
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +104 -104
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +381 -381
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file.mjs +67 -67
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +288 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/session.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/session.service.mjs +69 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/session_finished_dialog.mjs +29 -29
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +1386 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/warning_bar.mjs +28 -28
- package/{esm2020 → esm2022}/lib/speechrecorder/spruploader.mjs +22 -22
- package/{esm2020 → esm2022}/lib/speechrecorder/startstopsignal/startstopsignal.mjs +1 -1
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +57 -0
- package/{esm2020 → esm2022}/lib/speechrecorderng.component.mjs +388 -388
- package/{esm2020 → esm2022}/lib/speechrecorderng.module.mjs +100 -100
- package/{esm2020 → esm2022}/lib/spr.config.mjs +26 -26
- package/{esm2020 → esm2022}/lib/spr.module.version.mjs +2 -2
- package/{esm2020 → esm2022}/lib/ui/canvas_layer_comp.mjs +38 -38
- package/{esm2020 → esm2022}/lib/ui/message_dialog.mjs +30 -30
- package/esm2022/lib/ui/recordingitem_display.mjs +253 -0
- package/{esm2020 → esm2022}/lib/ui/responsive_component.mjs +24 -24
- package/{esm2020 → esm2022}/lib/utils/scrollIntoViewToBottom.mjs +23 -23
- package/esm2022/lib/utils/ua-parser.mjs +190 -0
- package/esm2022/lib/utils/utils.mjs +105 -0
- package/esm2022/lib/utils/wake_lock.mjs +114 -0
- package/{esm2020 → esm2022}/lib/utils/wake_lock_media.mjs +1 -1
- package/{esm2020 → esm2022}/public-api.mjs +33 -33
- package/{esm2020 → esm2022}/speechrecorderng.mjs +4 -4
- package/{fesm2020 → fesm2022}/speechrecorderng.mjs +16518 -16454
- package/fesm2022/speechrecorderng.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/action/action.d.ts +27 -27
- package/lib/audio/array_audio_buffer.d.ts +31 -31
- package/lib/audio/array_audio_buffer_input_stream.d.ts +14 -14
- package/lib/audio/array_audio_buffer_random_access_stream.d.ts +9 -9
- package/lib/audio/audio_data_holder.d.ts +84 -84
- package/lib/audio/audio_display.d.ts +36 -36
- package/lib/audio/audio_player.d.ts +47 -47
- package/lib/audio/capture/capture.d.ts +67 -67
- package/lib/audio/context.d.ts +6 -6
- package/lib/audio/dsp/level_measure.d.ts +60 -60
- package/lib/audio/format.d.ts +11 -11
- package/lib/audio/impl/wavformat.d.ts +5 -5
- package/lib/audio/impl/wavreader.d.ts +16 -16
- package/lib/audio/impl/wavwriter.d.ts +13 -13
- package/lib/audio/inddb_audio_buffer.d.ts +68 -68
- package/lib/audio/io/stream.d.ts +28 -28
- package/lib/audio/net_audio_buffer.d.ts +57 -57
- package/lib/audio/persistor.d.ts +29 -29
- package/lib/audio/playback/array_audio_buffer_source_node.d.ts +18 -18
- package/lib/audio/playback/audio_source_node.d.ts +10 -10
- package/lib/audio/playback/audio_source_worklet_module_loader.d.ts +4 -4
- package/lib/audio/playback/inddb_audio_buffer_source_node.d.ts +21 -21
- package/lib/audio/playback/net_audio_buffer_source_node.d.ts +27 -27
- package/lib/audio/playback/player.d.ts +65 -65
- package/lib/audio/ui/audio_canvas_layer_comp.d.ts +68 -68
- package/lib/audio/ui/audio_display_control.d.ts +25 -25
- package/lib/audio/ui/audio_display_scroll_pane.d.ts +26 -26
- package/lib/audio/ui/audiosignal.d.ts +30 -30
- package/lib/audio/ui/common.d.ts +11 -11
- package/lib/audio/ui/container.d.ts +63 -63
- package/lib/audio/ui/livelevel.d.ts +60 -60
- package/lib/audio/ui/scroll_pane_horizontal.d.ts +5 -5
- package/lib/audio/ui/sonagram.d.ts +37 -37
- package/lib/db/inddb.d.ts +21 -21
- package/lib/dsp/utils.d.ts +19 -19
- package/lib/io/BinaryReader.d.ts +18 -18
- package/lib/io/BinaryWriter.d.ts +15 -15
- package/lib/io/stream.d.ts +59 -59
- package/lib/math/2d/geometry.d.ts +18 -18
- package/lib/math/complex.d.ts +17 -17
- package/lib/math/dft.d.ts +22 -22
- package/lib/media/utils.d.ts +3 -3
- package/lib/net/uploader.d.ts +81 -81
- package/lib/recorder_component.d.ts +16 -16
- package/lib/speechrecorder/project/project.d.ts +59 -59
- package/lib/speechrecorder/project/project.service.d.ts +21 -21
- package/lib/speechrecorder/recording.d.ts +51 -51
- package/lib/speechrecorder/recordings/basic_recording.service.d.ts +27 -27
- package/lib/speechrecorder/recordings/recordings.service.d.ts +48 -48
- package/lib/speechrecorder/script/script.d.ts +80 -79
- package/lib/speechrecorder/script/script.service.d.ts +16 -16
- package/lib/speechrecorder/session/audiorecorder.d.ts +122 -122
- package/lib/speechrecorder/session/basicrecorder.d.ts +139 -139
- package/lib/speechrecorder/session/controlpanel.d.ts +109 -107
- package/lib/speechrecorder/session/item.d.ts +12 -12
- package/lib/speechrecorder/session/progress.d.ts +17 -17
- package/lib/speechrecorder/session/prompting.d.ts +121 -121
- package/lib/speechrecorder/session/recorder_combi_pane.d.ts +32 -32
- package/lib/speechrecorder/session/recording_file_cache.d.ts +33 -33
- package/lib/speechrecorder/session/recording_list.d.ts +24 -24
- package/lib/speechrecorder/session/recordingfile/recording-file-meta.component.d.ts +15 -15
- package/lib/speechrecorder/session/recordingfile/recording-file-navi.component.d.ts +20 -20
- package/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.d.ts +31 -31
- package/lib/speechrecorder/session/recordingfile/recording-file-view.component.d.ts +55 -55
- package/lib/speechrecorder/session/recordingfile/recording-file.d.ts +7 -7
- package/lib/speechrecorder/session/recordingfile/recordingfile-service.d.ts +24 -24
- package/lib/speechrecorder/session/session.d.ts +15 -15
- package/lib/speechrecorder/session/session.service.d.ts +20 -20
- package/lib/speechrecorder/session/session_finished_dialog.d.ts +10 -10
- package/lib/speechrecorder/session/sessionmanager.d.ts +129 -123
- package/lib/speechrecorder/session/warning_bar.d.ts +8 -8
- package/lib/speechrecorder/spruploader.d.ts +11 -11
- package/lib/speechrecorder/startstopsignal/startstopsignal.d.ts +10 -10
- package/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.d.ts +11 -11
- package/lib/speechrecorderng.component.d.ts +61 -61
- package/lib/speechrecorderng.module.d.ts +56 -56
- package/lib/spr.config.d.ts +17 -17
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/canvas_layer_comp.d.ts +13 -13
- package/lib/ui/message_dialog.d.ts +10 -10
- package/lib/ui/recordingitem_display.d.ts +84 -84
- package/lib/ui/responsive_component.d.ts +9 -9
- package/lib/utils/scrollIntoViewToBottom.d.ts +9 -9
- package/lib/utils/ua-parser.d.ts +43 -43
- package/lib/utils/utils.d.ts +19 -19
- package/lib/utils/wake_lock.d.ts +23 -23
- package/lib/utils/wake_lock_media.d.ts +1 -1
- package/package.json +17 -23
- package/public-api.d.ts +33 -33
- package/esm2020/lib/action/action.mjs +0 -73
- package/esm2020/lib/audio/audio_data_holder.mjs +0 -264
- package/esm2020/lib/audio/capture/capture.mjs +0 -855
- package/esm2020/lib/audio/context.mjs +0 -79
- package/esm2020/lib/audio/impl/wavformat.mjs +0 -6
- package/esm2020/lib/audio/impl/wavwriter.mjs +0 -105
- package/esm2020/lib/audio/inddb_audio_buffer.mjs +0 -508
- package/esm2020/lib/audio/net_audio_buffer.mjs +0 -293
- package/esm2020/lib/audio/playback/audio_source_node.mjs +0 -18
- package/esm2020/lib/audio/playback/audio_source_worklet_module_loader.mjs +0 -167
- package/esm2020/lib/audio/playback/player.mjs +0 -402
- package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +0 -347
- package/esm2020/lib/audio/ui/container.mjs +0 -414
- package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +0 -11
- package/esm2020/lib/audio/ui/sonagram.mjs +0 -900
- package/esm2020/lib/db/inddb.mjs +0 -120
- package/esm2020/lib/dsp/utils.mjs +0 -48
- package/esm2020/lib/io/BinaryWriter.mjs +0 -74
- package/esm2020/lib/math/complex.mjs +0 -58
- package/esm2020/lib/net/uploader.mjs +0 -367
- package/esm2020/lib/speechrecorder/project/project.mjs +0 -49
- package/esm2020/lib/speechrecorder/project/project.service.mjs +0 -64
- package/esm2020/lib/speechrecorder/recordings/basic_recording.service.mjs +0 -216
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +0 -1014
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +0 -1179
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +0 -666
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +0 -409
- package/esm2020/lib/speechrecorder/session/recording_file_cache.mjs +0 -195
- package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +0 -288
- package/esm2020/lib/speechrecorder/session/session.service.mjs +0 -69
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +0 -1333
- package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +0 -57
- package/esm2020/lib/ui/recordingitem_display.mjs +0 -253
- package/esm2020/lib/utils/ua-parser.mjs +0 -190
- package/esm2020/lib/utils/utils.mjs +0 -105
- package/esm2020/lib/utils/wake_lock.mjs +0 -114
- package/fesm2015/speechrecorderng.mjs +0 -17708
- package/fesm2015/speechrecorderng.mjs.map +0 -1
- package/fesm2020/speechrecorderng.mjs.map +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SimpleTrafficLight {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.status = 4 /* OFF */;
|
|
6
|
-
}
|
|
7
|
-
set status(status) {
|
|
8
|
-
if (4 /* OFF */ === status) {
|
|
9
|
-
this.lighttop = 'grey';
|
|
10
|
-
this.lightmid = 'grey';
|
|
11
|
-
this.lightbottom = 'grey';
|
|
12
|
-
}
|
|
13
|
-
else if (0 /* IDLE */ === status) {
|
|
14
|
-
this.lighttop = 'red';
|
|
15
|
-
this.lightmid = 'grey';
|
|
16
|
-
this.lightbottom = 'grey';
|
|
17
|
-
}
|
|
18
|
-
else if (1 /* PRERECORDING */ == status) {
|
|
19
|
-
this.lighttop = 'red';
|
|
20
|
-
this.lightmid = 'yellow';
|
|
21
|
-
this.lightbottom = 'grey';
|
|
22
|
-
}
|
|
23
|
-
else if (3 /* RECORDING */ == status) {
|
|
24
|
-
this.lighttop = 'grey';
|
|
25
|
-
this.lightmid = 'grey';
|
|
26
|
-
this.lightbottom = 'green';
|
|
27
|
-
}
|
|
28
|
-
else if (2 /* POSTRECORDING */ == status) {
|
|
29
|
-
this.lighttop = 'grey';
|
|
30
|
-
this.lightmid = 'yellow';
|
|
31
|
-
this.lightbottom = 'grey';
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
SimpleTrafficLight.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SimpleTrafficLight, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
-
SimpleTrafficLight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: { status: "status" }, ngImport: i0, template: `
|
|
37
|
-
|
|
38
|
-
<div>
|
|
39
|
-
<div class="circle {{lighttop}}"></div>
|
|
40
|
-
<div class="circle {{lightmid}}"></div>
|
|
41
|
-
<div class="circle {{lightbottom}}"></div>
|
|
42
|
-
</div>
|
|
43
|
-
`, 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"] });
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SimpleTrafficLight, decorators: [{
|
|
45
|
-
type: Component,
|
|
46
|
-
args: [{ selector: 'app-simpletrafficlight', template: `
|
|
47
|
-
|
|
48
|
-
<div>
|
|
49
|
-
<div class="circle {{lighttop}}"></div>
|
|
50
|
-
<div class="circle {{lightmid}}"></div>
|
|
51
|
-
<div class="circle {{lightbottom}}"></div>
|
|
52
|
-
</div>
|
|
53
|
-
`, 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"] }]
|
|
54
|
-
}], ctorParameters: function () { return []; }, propDecorators: { status: [{
|
|
55
|
-
type: Input
|
|
56
|
-
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxldHJhZmZpY2xpZ2h0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3N0YXJ0c3RvcHNpZ25hbC91aS9zaW1wbGV0cmFmZmljbGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUE7O0FBaUQ3QyxNQUFNLE9BQU8sa0JBQWtCO0lBTTdCO1FBQ0UsSUFBSSxDQUFDLE1BQU0sY0FBVSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLE1BQU0sQ0FBQyxNQUFhO1FBQ3RCLElBQUksZ0JBQWMsTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1NBQzNCO2FBQU0sSUFBSSxpQkFBZSxNQUFNLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7U0FDM0I7YUFBTSxJQUFJLHdCQUFzQixNQUFNLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7U0FDM0I7YUFBTSxJQUFJLHFCQUFtQixNQUFNLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7U0FDNUI7YUFBTSxJQUFJLHlCQUF1QixNQUFNLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7U0FDM0I7SUFDSCxDQUFDOztnSEFqQ1Usa0JBQWtCO29HQUFsQixrQkFBa0IsNEZBMUNuQjs7Ozs7OztHQU9UOzRGQW1DVSxrQkFBa0I7a0JBOUM5QixTQUFTOytCQUVFLHdCQUF3QixZQUV4Qjs7Ozs7OztHQU9UOzBFQThDRyxNQUFNO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCxJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtTdGFydFN0b3BTaWduYWwsIFN0YXRlfSBmcm9tICcuLi9zdGFydHN0b3BzaWduYWwnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtc2ltcGxldHJhZmZpY2xpZ2h0JyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuXHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlIHt7bGlnaHR0b3B9fVwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlIHt7bGlnaHRtaWR9fVwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlIHt7bGlnaHRib3R0b219fVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYFxyXG4gICxcclxuICBzdHlsZXM6IFtgLmNpcmNsZSB7XHJcbiAgICB3aWR0aDogNTBweDtcclxuICAgIGhlaWdodDogNTBweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIG1hcmdpbjogNXB4O1xyXG4gICAgYmFja2dyb3VuZDogZ3JleTtcclxuICB9YCwgYC5yZWQge1xyXG4gICAgYmFja2dyb3VuZDogcmVkO1xyXG4gIH1cclxuICBgLCBgXHJcbiAgICAueWVsbG93IHtcclxuICAgICAgYmFja2dyb3VuZDogeWVsbG93O1xyXG4gICAgfVxyXG4gIGAsIGBcclxuICAgIC5ncmVlbiB7XHJcbiAgICAgIGJhY2tncm91bmQ6IGdyZWVuO1xyXG4gICAgfVxyXG4gIGAsIGBcclxuICAgIC5ibGFjayB7XHJcbiAgICAgIGJhY2tncm91bmQ6IGJsYWNrO1xyXG4gICAgfWAsXHJcbiAgICAgIGA6aG9zdCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGJhY2tncm91bmQ6IGJsYWNrO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHBhZGRpbmc6IDJweDtcclxuICAgICAgaGVpZ2h0OiAxNzBweDtcclxuICAgICAgbWF4LWhlaWdodDogMTcwcHg7XHJcbiAgICAgIGZsZXg6IDAgMCBjb250ZW50O1xyXG4gICAgfVxyXG4gICAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpbXBsZVRyYWZmaWNMaWdodCBpbXBsZW1lbnRzIFN0YXJ0U3RvcFNpZ25hbCB7XHJcblxyXG4gIGxpZ2h0dG9wITogc3RyaW5nO1xyXG4gIGxpZ2h0bWlkITogc3RyaW5nO1xyXG4gIGxpZ2h0Ym90dG9tITogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc3RhdHVzPVN0YXRlLk9GRjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHN0YXR1cyhzdGF0dXM6IFN0YXRlKSB7XHJcbiAgICBpZiAoU3RhdGUuT0ZGID09PSBzdGF0dXMpIHtcclxuICAgICAgdGhpcy5saWdodHRvcCA9ICdncmV5JztcclxuICAgICAgdGhpcy5saWdodG1pZCA9ICdncmV5JztcclxuICAgICAgdGhpcy5saWdodGJvdHRvbSA9ICdncmV5JztcclxuICAgIH0gZWxzZSBpZiAoU3RhdGUuSURMRSA9PT0gc3RhdHVzKSB7XHJcbiAgICAgIHRoaXMubGlnaHR0b3AgPSAncmVkJztcclxuICAgICAgdGhpcy5saWdodG1pZCA9ICdncmV5JztcclxuICAgICAgdGhpcy5saWdodGJvdHRvbSA9ICdncmV5JztcclxuICAgIH0gZWxzZSBpZiAoU3RhdGUuUFJFUkVDT1JESU5HID09IHN0YXR1cykge1xyXG4gICAgICB0aGlzLmxpZ2h0dG9wID0gJ3JlZCc7XHJcbiAgICAgIHRoaXMubGlnaHRtaWQgPSAneWVsbG93JztcclxuICAgICAgdGhpcy5saWdodGJvdHRvbSA9ICdncmV5JztcclxuICAgIH0gZWxzZSBpZiAoU3RhdGUuUkVDT1JESU5HID09IHN0YXR1cykge1xyXG4gICAgICB0aGlzLmxpZ2h0dG9wID0gJ2dyZXknO1xyXG4gICAgICB0aGlzLmxpZ2h0bWlkID0gJ2dyZXknO1xyXG4gICAgICB0aGlzLmxpZ2h0Ym90dG9tID0gJ2dyZWVuJztcclxuICAgIH0gZWxzZSBpZiAoU3RhdGUuUE9TVFJFQ09SRElORyA9PSBzdGF0dXMpIHtcclxuICAgICAgdGhpcy5saWdodHRvcCA9ICdncmV5JztcclxuICAgICAgdGhpcy5saWdodG1pZCA9ICd5ZWxsb3cnO1xyXG4gICAgICB0aGlzLmxpZ2h0Ym90dG9tID0gJ2dyZXknO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
2
|
-
import { LevelBar } from "../audio/ui/livelevel";
|
|
3
|
-
import { ResponsiveComponent } from "./responsive_component";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/cdk/layout";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/material/icon";
|
|
8
|
-
import * as i4 from "@angular/material/tooltip";
|
|
9
|
-
import * as i5 from "../audio/ui/livelevel";
|
|
10
|
-
export const MIN_DB_LEVEL = -40.0;
|
|
11
|
-
export const DEFAULT_WARN_DB_LEVEL = -2;
|
|
12
|
-
export class RecordingItemControls extends ResponsiveComponent {
|
|
13
|
-
constructor(bpo, ref, changeDetectorRef) {
|
|
14
|
-
super(bpo);
|
|
15
|
-
this.bpo = bpo;
|
|
16
|
-
this.ref = ref;
|
|
17
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
18
|
-
this.ce = null;
|
|
19
|
-
this.audioSignalCollapsed = true;
|
|
20
|
-
this.enableDownload = false;
|
|
21
|
-
this.peakDbLvl = MIN_DB_LEVEL;
|
|
22
|
-
this._displayLevelInfos = null;
|
|
23
|
-
this._agc = undefined;
|
|
24
|
-
this.agcString = 'n/a';
|
|
25
|
-
this.onShowRecordingDetails = new EventEmitter();
|
|
26
|
-
this.onDownloadRecording = new EventEmitter();
|
|
27
|
-
this.disableAudioDetails = true;
|
|
28
|
-
this.audioLoaded = false;
|
|
29
|
-
this.playStartEnabled = false;
|
|
30
|
-
this.playStopEnabled = false;
|
|
31
|
-
this.updateTimerId = null;
|
|
32
|
-
this.destroyed = false;
|
|
33
|
-
this.warnDbLevel = DEFAULT_WARN_DB_LEVEL;
|
|
34
|
-
}
|
|
35
|
-
set agc(agc) {
|
|
36
|
-
this._agc = agc;
|
|
37
|
-
if (this._agc === undefined || this._agc === null) {
|
|
38
|
-
this.agcString = 'n/a';
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
if (this._agc === true) {
|
|
42
|
-
this.agcString = 'On';
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.agcString = 'Off';
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
ngOnDestroy() {
|
|
50
|
-
this.destroyed = true;
|
|
51
|
-
}
|
|
52
|
-
showRecordingDetails() {
|
|
53
|
-
this.onShowRecordingDetails.emit();
|
|
54
|
-
}
|
|
55
|
-
downloadRecording() {
|
|
56
|
-
this.onDownloadRecording.emit();
|
|
57
|
-
}
|
|
58
|
-
ngAfterViewInit() {
|
|
59
|
-
this.ce = this.ref.nativeElement;
|
|
60
|
-
}
|
|
61
|
-
set displayLevelInfos(levelInfos) {
|
|
62
|
-
this._displayLevelInfos = levelInfos;
|
|
63
|
-
}
|
|
64
|
-
error() {
|
|
65
|
-
// this.status = 'ERROR';
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
RecordingItemControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, deps: [{ token: i1.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
-
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: `
|
|
70
|
-
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
71
|
-
[disabled]="playStartAction?.disabled"
|
|
72
|
-
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
73
|
-
<mat-icon>play_arrow</mat-icon>
|
|
74
|
-
</button>
|
|
75
|
-
<button matTooltip="Stop playback" (click)="playStopAction?.perform()"
|
|
76
|
-
[disabled]="playStopAction?.disabled"
|
|
77
|
-
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
78
|
-
<mat-icon>stop</mat-icon>
|
|
79
|
-
</button>
|
|
80
|
-
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
81
|
-
(click)="showRecordingDetails()">
|
|
82
|
-
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
83
|
-
</button>
|
|
84
|
-
<button matTooltip="Download current recording" *ngIf="enableDownload" [disabled]="disableAudioDetails || !audioLoaded"
|
|
85
|
-
(click)="downloadRecording()">
|
|
86
|
-
<mat-icon>file_download</mat-icon>
|
|
87
|
-
</button>
|
|
88
|
-
<div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
|
|
89
|
-
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
90
|
-
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
91
|
-
`, 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }] });
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemControls, decorators: [{
|
|
93
|
-
type: Component,
|
|
94
|
-
args: [{ selector: 'spr-recordingitemcontrols', template: `
|
|
95
|
-
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
96
|
-
[disabled]="playStartAction?.disabled"
|
|
97
|
-
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
98
|
-
<mat-icon>play_arrow</mat-icon>
|
|
99
|
-
</button>
|
|
100
|
-
<button matTooltip="Stop playback" (click)="playStopAction?.perform()"
|
|
101
|
-
[disabled]="playStopAction?.disabled"
|
|
102
|
-
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
103
|
-
<mat-icon>stop</mat-icon>
|
|
104
|
-
</button>
|
|
105
|
-
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
106
|
-
(click)="showRecordingDetails()">
|
|
107
|
-
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
108
|
-
</button>
|
|
109
|
-
<button matTooltip="Download current recording" *ngIf="enableDownload" [disabled]="disableAudioDetails || !audioLoaded"
|
|
110
|
-
(click)="downloadRecording()">
|
|
111
|
-
<mat-icon>file_download</mat-icon>
|
|
112
|
-
</button>
|
|
113
|
-
<div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
|
|
114
|
-
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
115
|
-
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
116
|
-
`, 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"] }]
|
|
117
|
-
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], enableDownload: [{
|
|
120
|
-
type: Input
|
|
121
|
-
}], peakDbLvl: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], agc: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], onShowRecordingDetails: [{
|
|
126
|
-
type: Output
|
|
127
|
-
}], onDownloadRecording: [{
|
|
128
|
-
type: Output
|
|
129
|
-
}], disableAudioDetails: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], audioLoaded: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], playStartAction: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], playStopAction: [{
|
|
136
|
-
type: Input
|
|
137
|
-
}], displayLevelInfos: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}] } });
|
|
140
|
-
export class RecordingItemDisplay extends ResponsiveComponent {
|
|
141
|
-
constructor(bpo, ref, changeDetectorRef) {
|
|
142
|
-
super(bpo);
|
|
143
|
-
this.bpo = bpo;
|
|
144
|
-
this.ref = ref;
|
|
145
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
146
|
-
this.ce = null;
|
|
147
|
-
this.streamingMode = false;
|
|
148
|
-
this.audioSignalCollapsed = true;
|
|
149
|
-
this.enableDownload = false;
|
|
150
|
-
this.peakDbLvl = MIN_DB_LEVEL;
|
|
151
|
-
this._displayLevelInfos = null;
|
|
152
|
-
this._agc = undefined;
|
|
153
|
-
this.agcString = 'n/a';
|
|
154
|
-
this.onShowRecordingDetails = new EventEmitter();
|
|
155
|
-
this.onDownloadRecording = new EventEmitter();
|
|
156
|
-
this.playStartEnabled = false;
|
|
157
|
-
this.playStopEnabled = false;
|
|
158
|
-
this.updateTimerId = null;
|
|
159
|
-
this.destroyed = false;
|
|
160
|
-
this.warnDbLevel = DEFAULT_WARN_DB_LEVEL;
|
|
161
|
-
}
|
|
162
|
-
set agc(agc) {
|
|
163
|
-
this._agc = agc;
|
|
164
|
-
}
|
|
165
|
-
ngOnDestroy() {
|
|
166
|
-
this.destroyed = true;
|
|
167
|
-
}
|
|
168
|
-
set displayAudioBuffer(displayAudioBuffer) {
|
|
169
|
-
this._displayAudioBuffer = displayAudioBuffer;
|
|
170
|
-
}
|
|
171
|
-
get displayAudioBuffer() {
|
|
172
|
-
return this._displayAudioBuffer;
|
|
173
|
-
}
|
|
174
|
-
showRecordingDetails() {
|
|
175
|
-
this.onShowRecordingDetails.emit();
|
|
176
|
-
}
|
|
177
|
-
downloadRecording() {
|
|
178
|
-
this.onDownloadRecording.emit();
|
|
179
|
-
}
|
|
180
|
-
ngAfterViewInit() {
|
|
181
|
-
this.ce = this.ref.nativeElement;
|
|
182
|
-
//this.controlAudioPlayer.listener=this;
|
|
183
|
-
}
|
|
184
|
-
set displayLevelInfos(levelInfos) {
|
|
185
|
-
this._displayLevelInfos = levelInfos;
|
|
186
|
-
}
|
|
187
|
-
set channelCount(channelCount) {
|
|
188
|
-
this.reset();
|
|
189
|
-
this.liveLevel.channelCount = channelCount;
|
|
190
|
-
}
|
|
191
|
-
set playFramePosition(playFramePosition) {
|
|
192
|
-
this.liveLevel.playFramePosition = playFramePosition;
|
|
193
|
-
}
|
|
194
|
-
update(levelInfo, peakLevelInfo) {
|
|
195
|
-
let peakDBVal = levelInfo.powerLevelDB();
|
|
196
|
-
if (this.peakDbLvl < peakDBVal) {
|
|
197
|
-
this.peakDbLvl = peakDBVal;
|
|
198
|
-
// the event comes from outside an Angular zone
|
|
199
|
-
this.changeDetectorRef.detectChanges();
|
|
200
|
-
}
|
|
201
|
-
this.liveLevel.update(levelInfo);
|
|
202
|
-
}
|
|
203
|
-
error() {
|
|
204
|
-
// this.status = 'ERROR';
|
|
205
|
-
}
|
|
206
|
-
streamFinished() {
|
|
207
|
-
this.liveLevel.streamFinished();
|
|
208
|
-
}
|
|
209
|
-
reset() {
|
|
210
|
-
this.peakDbLvl = MIN_DB_LEVEL;
|
|
211
|
-
this.changeDetectorRef.detectChanges();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
RecordingItemDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i1.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
215
|
-
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: `
|
|
216
|
-
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
217
|
-
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
218
|
-
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
219
|
-
</div>
|
|
220
|
-
`, 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: i5.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"] }] });
|
|
221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingItemDisplay, decorators: [{
|
|
222
|
-
type: Component,
|
|
223
|
-
args: [{ selector: 'spr-recordingitemdisplay', template: `
|
|
224
|
-
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
225
|
-
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
226
|
-
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
227
|
-
</div>
|
|
228
|
-
`, 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"] }]
|
|
229
|
-
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
230
|
-
type: ViewChild,
|
|
231
|
-
args: [LevelBar, { static: true }]
|
|
232
|
-
}], streamingMode: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], audioSignalCollapsed: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], enableDownload: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], agc: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], onShowRecordingDetails: [{
|
|
241
|
-
type: Output
|
|
242
|
-
}], onDownloadRecording: [{
|
|
243
|
-
type: Output
|
|
244
|
-
}], playStartAction: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], playStopAction: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], displayAudioBuffer: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], displayLevelInfos: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}] } });
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5naXRlbV9kaXNwbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3VpL3JlY29yZGluZ2l0ZW1fZGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ2dCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFDaEYsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQUkzRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFrRHhDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxtQkFBbUI7SUEyQzVELFlBQXNCLEdBQXNCLEVBQVMsR0FBZSxFQUFVLGlCQUFvQztRQUNoSCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFEUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBekNsSCxPQUFFLEdBQXNCLElBQUksQ0FBQztRQUNwQix5QkFBb0IsR0FBVSxJQUFJLENBQUM7UUFFbkMsbUJBQWMsR0FBVSxLQUFLLENBQUM7UUFFOUIsY0FBUyxHQUFHLFlBQVksQ0FBQztRQUVsQyx1QkFBa0IsR0FBb0IsSUFBSSxDQUFDO1FBRTNDLFNBQUksR0FBd0IsU0FBUyxDQUFDO1FBQ3RDLGNBQVMsR0FBQyxLQUFLLENBQUM7UUFlTiwyQkFBc0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0RSx3QkFBbUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVwRSx3QkFBbUIsR0FBQyxJQUFJLENBQUM7UUFDekIsZ0JBQVcsR0FBQyxLQUFLLENBQUM7UUFJM0IscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGtCQUFhLEdBQWMsSUFBSSxDQUFDO1FBRWhDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxxQkFBcUIsQ0FBQztJQUlwQyxDQUFDO0lBL0JELElBQWEsR0FBRyxDQUFDLEdBQTBCO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUMsR0FBRyxDQUFDO1FBQ2QsSUFBRyxJQUFJLENBQUMsSUFBSSxLQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFHLElBQUksRUFBQztZQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFDLEtBQUssQ0FBQztTQUN0QjthQUFJO1lBQ0gsSUFBRyxJQUFJLENBQUMsSUFBSSxLQUFHLElBQUksRUFBQztnQkFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBQyxJQUFJLENBQUM7YUFDckI7aUJBQUk7Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBQyxLQUFLLENBQUM7YUFDdEI7U0FDRjtJQUNILENBQUM7SUFzQkQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUNJLGlCQUFpQixDQUFDLFVBQTZCO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUs7UUFDSCx5QkFBeUI7SUFDM0IsQ0FBQzs7bUhBdEVVLHFCQUFxQjt1R0FBckIscUJBQXFCLHlmQTlDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQlA7NEZBd0JRLHFCQUFxQjtrQkFoRGpDLFNBQVM7K0JBQ0UsMkJBQTJCLFlBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBc0JQO2tLQTJCTSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9PLEdBQUc7c0JBQWYsS0FBSztnQkFhSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVFLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkE4QkYsaUJBQWlCO3NCQURwQixLQUFLOztBQXlDUixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBa0N6RCxZQUFzQixHQUFzQixFQUFTLEdBQWUsRUFBVSxpQkFBb0M7UUFDOUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRE8sUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWhDbEgsT0FBRSxHQUFzQixJQUFJLENBQUM7UUFFcEIsa0JBQWEsR0FBVSxLQUFLLENBQUM7UUFDN0IseUJBQW9CLEdBQVUsSUFBSSxDQUFDO1FBRW5DLG1CQUFjLEdBQVUsS0FBSyxDQUFDO1FBRXZDLGNBQVMsR0FBRyxZQUFZLENBQUM7UUFFekIsdUJBQWtCLEdBQW9CLElBQUksQ0FBQztRQUUzQyxTQUFJLEdBQXdCLFNBQVMsQ0FBQztRQUN0QyxjQUFTLEdBQUMsS0FBSyxDQUFDO1FBTU4sMkJBQXNCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEUsd0JBQW1CLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFLN0UscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGtCQUFhLEdBQWMsSUFBSSxDQUFDO1FBRWhDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxxQkFBcUIsQ0FBQztJQUlwQyxDQUFDO0lBcEJELElBQWEsR0FBRyxDQUFDLEdBQTBCO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUMsR0FBRyxDQUFDO0lBQ2hCLENBQUM7SUFvQkQsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFHRCxJQUNJLGtCQUFrQixDQUFDLGtCQUFpRDtRQUNwRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBQ2pDLHdDQUF3QztJQUM1QyxDQUFDO0lBRUQsSUFDSSxpQkFBaUIsQ0FBQyxVQUE2QjtRQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxZQUFvQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDL0MsQ0FBQztJQUVILElBQUksaUJBQWlCLENBQUMsaUJBQXlCO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUMsaUJBQWlCLENBQUM7SUFDckQsQ0FBQztJQUVDLE1BQU0sQ0FBQyxTQUFvQixFQUFFLGFBQXdCO1FBQ2pELElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzNCLCtDQUErQztZQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSztRQUNELHlCQUF5QjtJQUM3QixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7a0hBcEdRLG9CQUFvQjtzR0FBcEIsb0JBQW9CLHNmQUdsQixRQUFRLHFGQTlCVDs7Ozs7S0FLVCxpZ0JBbEZRLHFCQUFxQjs0RkF3R3JCLG9CQUFvQjtrQkE3QmhDLFNBQVM7K0JBQ0ksMEJBQTBCLFlBQzFCOzs7OztLQUtUO2tLQXlCc0MsU0FBUztzQkFBL0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUM1QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQVNPLEdBQUc7c0JBQWYsS0FBSztnQkFJSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUdFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFtQkYsa0JBQWtCO3NCQURyQixLQUFLO2dCQXVCRixpQkFBaUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXHJcbmltcG9ydCB7TGV2ZWxJbmZvLCBMZXZlbEluZm9zLCBMZXZlbExpc3RlbmVyfSBmcm9tIFwiLi4vYXVkaW8vZHNwL2xldmVsX21lYXN1cmVcIjtcclxuaW1wb3J0IHtMZXZlbEJhcn0gZnJvbSBcIi4uL2F1ZGlvL3VpL2xpdmVsZXZlbFwiO1xyXG5pbXBvcnQge0FjdGlvbn0gZnJvbSBcIi4uL2FjdGlvbi9hY3Rpb25cIjtcclxuaW1wb3J0IHtSZXNwb25zaXZlQ29tcG9uZW50fSBmcm9tIFwiLi9yZXNwb25zaXZlX2NvbXBvbmVudFwiO1xyXG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9sYXlvdXRcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3QgTUlOX0RCX0xFVkVMID0gLTQwLjA7XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dBUk5fREJfTEVWRUwgPSAtMjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3ByLXJlY29yZGluZ2l0ZW1jb250cm9scycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YnV0dG9uIG1hdFRvb2x0aXA9XCJTdGFydCBwbGF5YmFja1wiIChjbGljayk9XCJwbGF5U3RhcnRBY3Rpb24/LnBlcmZvcm0oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGxheVN0YXJ0QWN0aW9uPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwicGxheVN0YXJ0QWN0aW9uPy5kaXNhYmxlZCA/ICdncmV5JyA6ICdncmVlbidcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnBsYXlfYXJyb3c8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0VG9vbHRpcD1cIlN0b3AgcGxheWJhY2tcIiAoY2xpY2spPVwicGxheVN0b3BBY3Rpb24/LnBlcmZvcm0oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGxheVN0b3BBY3Rpb24/LmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJwbGF5U3RvcEFjdGlvbj8uZGlzYWJsZWQgPyAnZ3JleScgOiAneWVsbG93J1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+c3RvcDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFzY3JlZW5Yc1wiIG1hdFRvb2x0aXA9XCJUb2dnbGUgZGV0YWlsZWQgYXVkaW8gZGlzcGxheVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQXVkaW9EZXRhaWxzIHx8ICFhdWRpb0xvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1JlY29yZGluZ0RldGFpbHMoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+e3soYXVkaW9TaWduYWxDb2xsYXBzZWQpID8gXCJleHBhbmRfbGVzc1wiIDogXCJleHBhbmRfbW9yZVwifX08L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0VG9vbHRpcD1cIkRvd25sb2FkIGN1cnJlbnQgcmVjb3JkaW5nXCIgKm5nSWY9XCJlbmFibGVEb3dubG9hZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQXVkaW9EZXRhaWxzIHx8ICFhdWRpb0xvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRSZWNvcmRpbmcoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIm1pbi13aWR0aDogMTRjaDtwYWRkaW5nOjJweFwiPjx0YWJsZSBzdHlsZT1cImJvcmRlci1zdHlsZTogbm9uZVwiPjx0cj48dGQ+UGVhazo8L3RkPjx0ZD48c3BhbiBtYXRUb29sdGlwPVwiUGVhayBsZXZlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIocGVha0RiTHZsID4gd2FybkRiTGV2ZWwpPydyZWQnOidibGFjaydcIj57e3BlYWtEYkx2bCB8IG51bWJlcjonMS4xLTEnfX0gZEIgPC9zcGFuPjwvdGQ+PC90cj5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cIl9hZ2NcIj48dGQ+QUdDOjwvdGQ+PHRkPjxzcGFuIG1hdFRvb2x0aXA9XCJBdXRvIGdhaW4gY29udHJvbFwiPnt7YWdjU3RyaW5nfX08L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+XHJcbiAgICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICAgICAgZmxleDogMDsgLyogb25seSByZXF1aXJlZCB2ZXJ0aWNhbCBzcGFjZSAqL1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGRhcmtncmF5O1xyXG4gICAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICAgICAgZGlzcGxheTogZmxleDsgLyogZmxleCBjb250YWluZXI6IGxlZnQgbGV2ZWwgYmFyLCByaWdodCBkZWNpbWFsIHBlYWsgbGV2ZWwgdmFsdWUgKi9cclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiB3cmFwIGNvdWxkIGNvbXBsZXRlbHkgZGVzdHJveSB0aGUgbGF5b3V0ICovXHJcbiAgICB9YCwgYHNwYW4ge1xyXG4gICAgICAgIGZsZXg6IDA7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1gLGBcclxuICAgICBidXR0b24ge1xyXG4gICAgICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XHJcbiAgICAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nSXRlbUNvbnRyb2xzIGV4dGVuZHMgUmVzcG9uc2l2ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIGNlOiBIVE1MRGl2RWxlbWVudHxudWxsPW51bGw7XHJcbiAgQElucHV0KCkgYXVkaW9TaWduYWxDb2xsYXBzZWQ6IGJvb2xlYW49dHJ1ZTtcclxuICBwcml2YXRlIF9kaXNwbGF5QXVkaW9CdWZmZXI6IEF1ZGlvQnVmZmVyIHwgbnVsbHx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZW5hYmxlRG93bmxvYWQ6IGJvb2xlYW49ZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHBlYWtEYkx2bCA9IE1JTl9EQl9MRVZFTDtcclxuXHJcbiAgX2Rpc3BsYXlMZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbD1udWxsO1xyXG5cclxuICBfYWdjOmJvb2xlYW58bnVsbHx1bmRlZmluZWQ9dW5kZWZpbmVkO1xyXG4gIGFnY1N0cmluZz0nbi9hJztcclxuXHJcbiAgQElucHV0KCkgc2V0IGFnYyhhZ2M6Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCl7XHJcbiAgICB0aGlzLl9hZ2M9YWdjO1xyXG4gICAgaWYodGhpcy5fYWdjPT09dW5kZWZpbmVkIHx8IHRoaXMuX2FnYz09PW51bGwpe1xyXG4gICAgICB0aGlzLmFnY1N0cmluZz0nbi9hJztcclxuICAgIH1lbHNle1xyXG4gICAgICBpZih0aGlzLl9hZ2M9PT10cnVlKXtcclxuICAgICAgICB0aGlzLmFnY1N0cmluZz0nT24nO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmFnY1N0cmluZz0nT2ZmJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uU2hvd1JlY29yZGluZ0RldGFpbHM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25Eb3dubG9hZFJlY29yZGluZzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlQXVkaW9EZXRhaWxzPXRydWU7XHJcbiAgQElucHV0KCkgYXVkaW9Mb2FkZWQ9ZmFsc2U7XHJcbiAgLy9ASW5wdXQoKSBjb250cm9sQXVkaW9QbGF5ZXI6IEF1ZGlvUGxheWVyO1xyXG4gIEBJbnB1dCgpIHBsYXlTdGFydEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHBsYXlTdG9wQWN0aW9uOkFjdGlvbjx2b2lkPnx1bmRlZmluZWQ7XHJcbiAgcGxheVN0YXJ0RW5hYmxlZCA9IGZhbHNlO1xyXG4gIHBsYXlTdG9wRW5hYmxlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdXBkYXRlVGltZXJJZDogbnVtYmVyfG51bGw9bnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBmYWxzZTtcclxuXHJcbiAgd2FybkRiTGV2ZWwgPSBERUZBVUxUX1dBUk5fREJfTEVWRUw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBicG86QnJlYWtwb2ludE9ic2VydmVyLHByaXZhdGUgcmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoYnBvKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2hvd1JlY29yZGluZ0RldGFpbHMoKSB7XHJcbiAgICB0aGlzLm9uU2hvd1JlY29yZGluZ0RldGFpbHMuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRSZWNvcmRpbmcoKSB7XHJcbiAgICB0aGlzLm9uRG93bmxvYWRSZWNvcmRpbmcuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jZSA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkaXNwbGF5TGV2ZWxJbmZvcyhsZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fZGlzcGxheUxldmVsSW5mb3MgPSBsZXZlbEluZm9zO1xyXG4gIH1cclxuXHJcbiAgZXJyb3IoKSB7XHJcbiAgICAvLyB0aGlzLnN0YXR1cyA9ICdFUlJPUic7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzcHItcmVjb3JkaW5naXRlbWRpc3BsYXknLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBbY2xhc3NdPVwie2F1ZGlvU3RhdHVzRGlzcGxheTohc2NyZWVuWHMsYXVkaW9TdGF0dXNEaXNwbGF5WHM6c2NyZWVuWHN9XCI+XHJcbiAgICAgICAgPGF1ZGlvLWxldmVsYmFyIHN0eWxlPVwiZmxleDoxIDAgMSVcIiBbc3RyZWFtaW5nTW9kZV09XCJzdHJlYW1pbmdNb2RlXCIgW2Rpc3BsYXlMZXZlbEluZm9zXT1cIl9kaXNwbGF5TGV2ZWxJbmZvc1wiPjwvYXVkaW8tbGV2ZWxiYXI+XHJcbiAgICAgICAgPHNwci1yZWNvcmRpbmdpdGVtY29udHJvbHMgc3R5bGU9XCJmbGV4OjAgMCAwcHhcIiBbYXVkaW9Mb2FkZWRdPVwiZGlzcGxheUF1ZGlvQnVmZmVyIT09bnVsbFwiIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCIgW3BsYXlTdG9wQWN0aW9uXT1cInBsYXlTdG9wQWN0aW9uXCIgW3BlYWtEYkx2bF09XCJwZWFrRGJMdmxcIiBbYWdjXT1cIl9hZ2NcIiAob25TaG93UmVjb3JkaW5nRGV0YWlscyk9XCJvblNob3dSZWNvcmRpbmdEZXRhaWxzLmVtaXQoKVwiPjwvc3ByLXJlY29yZGluZ2l0ZW1jb250cm9scz5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYGRpdiB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZDogZGFya2dyYXk7XHJcbiAgICAgICAgcGFkZGluZzogNHB4O1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7IC8qIHdyYXAgY291bGQgY29tcGxldGVseSBkZXN0cm95IHRoZSBsYXlvdXQgKi9cclxuICAgIH1gLCBgYXVkaW8tbGV2ZWxiYXIge1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9YCxgLmF1ZGlvU3RhdHVzRGlzcGxheXtcclxuICAgIGRpc3BsYXk6ZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICBoZWlnaHQ6MTAwcHg7XHJcbiAgICBtaW4taGVpZ2h0OiAxMDBweDtcclxuICB9YCxgLmF1ZGlvU3RhdHVzRGlzcGxheVhze1xyXG4gICAgZGlzcGxheTpmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGhlaWdodDoxMjVweDtcclxuICAgIG1pbi1oZWlnaHQ6IDEyNXB4O1xyXG4gIH1gXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0l0ZW1EaXNwbGF5IGV4dGVuZHMgUmVzcG9uc2l2ZUNvbXBvbmVudCBpbXBsZW1lbnRzIExldmVsTGlzdGVuZXIsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgY2U6IEhUTUxEaXZFbGVtZW50fG51bGw9bnVsbDtcclxuICAgIEBWaWV3Q2hpbGQoTGV2ZWxCYXIsIHsgc3RhdGljOiB0cnVlIH0pIGxpdmVMZXZlbCE6IExldmVsQmFyO1xyXG4gICAgQElucHV0KCkgc3RyZWFtaW5nTW9kZTogYm9vbGVhbj1mYWxzZTtcclxuICAgIEBJbnB1dCgpIGF1ZGlvU2lnbmFsQ29sbGFwc2VkOiBib29sZWFuPXRydWU7XHJcbiAgICBwcml2YXRlIF9kaXNwbGF5QXVkaW9CdWZmZXI6IEF1ZGlvQnVmZmVyIHwgbnVsbHx1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuXHJcbiAgICBwZWFrRGJMdmwgPSBNSU5fREJfTEVWRUw7XHJcblxyXG4gICAgX2Rpc3BsYXlMZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbD1udWxsO1xyXG5cclxuICAgIF9hZ2M6Ym9vbGVhbnxudWxsfHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgICBhZ2NTdHJpbmc9J24vYSc7XHJcblxyXG4gICAgQElucHV0KCkgc2V0IGFnYyhhZ2M6Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCl7XHJcbiAgICAgIHRoaXMuX2FnYz1hZ2M7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIG9uU2hvd1JlY29yZGluZ0RldGFpbHM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkRvd25sb2FkUmVjb3JkaW5nOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLy9ASW5wdXQoKSBjb250cm9sQXVkaW9QbGF5ZXI6IEF1ZGlvUGxheWVyO1xyXG4gICAgQElucHV0KCkgcGxheVN0YXJ0QWN0aW9uOkFjdGlvbjx2b2lkPnx1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgcGxheVN0YXJ0RW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgcGxheVN0b3BFbmFibGVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVySWQ6IG51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gICAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBmYWxzZTtcclxuXHJcbiAgICB3YXJuRGJMZXZlbCA9IERFRkFVTFRfV0FSTl9EQl9MRVZFTDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYnBvOkJyZWFrcG9pbnRPYnNlcnZlcixwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBzdXBlcihicG8pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBkaXNwbGF5QXVkaW9CdWZmZXIoZGlzcGxheUF1ZGlvQnVmZmVyOiBBdWRpb0J1ZmZlciB8IG51bGx8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlBdWRpb0J1ZmZlciA9IGRpc3BsYXlBdWRpb0J1ZmZlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlzcGxheUF1ZGlvQnVmZmVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5QXVkaW9CdWZmZXI7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1JlY29yZGluZ0RldGFpbHMoKSB7XHJcbiAgICAgICAgdGhpcy5vblNob3dSZWNvcmRpbmdEZXRhaWxzLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZFJlY29yZGluZygpIHtcclxuICAgICAgICB0aGlzLm9uRG93bmxvYWRSZWNvcmRpbmcuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNlID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAvL3RoaXMuY29udHJvbEF1ZGlvUGxheWVyLmxpc3RlbmVyPXRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBkaXNwbGF5TGV2ZWxJbmZvcyhsZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlMZXZlbEluZm9zID0gbGV2ZWxJbmZvcztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgY2hhbm5lbENvdW50KGNoYW5uZWxDb3VudDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMubGl2ZUxldmVsLmNoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudDtcclxuICAgIH1cclxuXHJcbiAgc2V0IHBsYXlGcmFtZVBvc2l0aW9uKHBsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMubGl2ZUxldmVsLnBsYXlGcmFtZVBvc2l0aW9uPXBsYXlGcmFtZVBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgICB1cGRhdGUobGV2ZWxJbmZvOiBMZXZlbEluZm8sIHBlYWtMZXZlbEluZm86IExldmVsSW5mbykge1xyXG4gICAgICAgIGxldCBwZWFrREJWYWwgPSBsZXZlbEluZm8ucG93ZXJMZXZlbERCKCk7XHJcbiAgICAgICAgaWYgKHRoaXMucGVha0RiTHZsIDwgcGVha0RCVmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVha0RiTHZsID0gcGVha0RCVmFsO1xyXG4gICAgICAgICAgICAvLyB0aGUgZXZlbnQgY29tZXMgZnJvbSBvdXRzaWRlIGFuIEFuZ3VsYXIgem9uZVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saXZlTGV2ZWwudXBkYXRlKGxldmVsSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZXJyb3IoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5zdGF0dXMgPSAnRVJST1InO1xyXG4gICAgfVxyXG5cclxuICAgIHN0cmVhbUZpbmlzaGVkKCkge1xyXG4gICAgICAgIHRoaXMubGl2ZUxldmVsLnN0cmVhbUZpbmlzaGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgdGhpcy5wZWFrRGJMdmwgPSBNSU5fREJfTEVWRUw7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
export class UserAgentComponent {
|
|
2
|
-
constructor(name, version, comment) {
|
|
3
|
-
this.name = name;
|
|
4
|
-
this.version = version;
|
|
5
|
-
this.comment = comment;
|
|
6
|
-
}
|
|
7
|
-
toString() {
|
|
8
|
-
let s = '[' + this.name + ']';
|
|
9
|
-
if (this.version) {
|
|
10
|
-
s = s + ' [' + this.version + ']';
|
|
11
|
-
}
|
|
12
|
-
if (this.comment) {
|
|
13
|
-
s = s + ' [' + this.comment + ']';
|
|
14
|
-
}
|
|
15
|
-
return s;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export const NAME_FIREFOX = 'Firefox';
|
|
19
|
-
export const NAME_CHROME = 'Chrome';
|
|
20
|
-
export const NAME_SAFARI = 'Safari';
|
|
21
|
-
export const NAME_EDGE = 'Edge';
|
|
22
|
-
export var Browser;
|
|
23
|
-
(function (Browser) {
|
|
24
|
-
Browser["Firefox"] = "Firefox";
|
|
25
|
-
Browser["Chrome"] = "Chrome";
|
|
26
|
-
Browser["Safari"] = "Safari";
|
|
27
|
-
Browser["Edge"] = "Edge";
|
|
28
|
-
})(Browser || (Browser = {}));
|
|
29
|
-
export const OS_WINDOWS = 'Windows';
|
|
30
|
-
export const OS_ANDROID = 'Android';
|
|
31
|
-
export var Platform;
|
|
32
|
-
(function (Platform) {
|
|
33
|
-
Platform["Windows"] = "Windows";
|
|
34
|
-
Platform["Android"] = "Android";
|
|
35
|
-
Platform["macOS"] = "MAC OS X";
|
|
36
|
-
})(Platform || (Platform = {}));
|
|
37
|
-
export class UserAgent {
|
|
38
|
-
constructor(_detectedPlatform, _detectedBrowser, _detectedBrowserVersion = null) {
|
|
39
|
-
this._detectedPlatform = _detectedPlatform;
|
|
40
|
-
this._detectedBrowser = _detectedBrowser;
|
|
41
|
-
this._detectedBrowserVersion = _detectedBrowserVersion;
|
|
42
|
-
}
|
|
43
|
-
get detectedBrowser() {
|
|
44
|
-
return this._detectedBrowser;
|
|
45
|
-
}
|
|
46
|
-
get detectedBrowserVersion() {
|
|
47
|
-
return this._detectedBrowserVersion;
|
|
48
|
-
}
|
|
49
|
-
get detectedPlatform() {
|
|
50
|
-
return this._detectedPlatform;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export class UserAgentBuilder {
|
|
54
|
-
constructor() {
|
|
55
|
-
this.comps = new Array();
|
|
56
|
-
}
|
|
57
|
-
build() {
|
|
58
|
-
// // @ts-ignore
|
|
59
|
-
// if(navigator.userAgentData){
|
|
60
|
-
// // maybe we can use this in the future
|
|
61
|
-
// console.info("Browser provides userAgentData:");
|
|
62
|
-
//
|
|
63
|
-
// console.info("Brands:");
|
|
64
|
-
// // @ts-ignore
|
|
65
|
-
// navigator.userAgentData.brands.forEach((br=>{
|
|
66
|
-
// console.info(br.brand +" "+br.version);
|
|
67
|
-
// }))
|
|
68
|
-
// // @ts-ignore
|
|
69
|
-
// console.info("Platform: "+navigator.userAgentData.platform);
|
|
70
|
-
// // @ts-ignore
|
|
71
|
-
// console.info("Mobile:"+navigator.userAgentData.mobile);
|
|
72
|
-
// // @ts-ignore
|
|
73
|
-
// //console.info(navigator.userAgentData.toJSON());
|
|
74
|
-
// }else {
|
|
75
|
-
// console.info("Browser does not provide userAgentData.");
|
|
76
|
-
// }
|
|
77
|
-
let ua = navigator.userAgent;
|
|
78
|
-
console.debug("User agent: " + ua);
|
|
79
|
-
this.comps = new Array();
|
|
80
|
-
let pp = 0;
|
|
81
|
-
while (pp < ua.length) {
|
|
82
|
-
//parse name/version
|
|
83
|
-
let name = null;
|
|
84
|
-
let version = null;
|
|
85
|
-
let comment;
|
|
86
|
-
let blPos = ua.indexOf(' ', pp);
|
|
87
|
-
let prt;
|
|
88
|
-
// TODO Replace substr with substring (?)
|
|
89
|
-
// https://stackoverflow.com/questions/52640271/why-is-string-prototype-substr-deprecated
|
|
90
|
-
if (blPos == -1) {
|
|
91
|
-
prt = ua.substr(pp);
|
|
92
|
-
pp += prt.length;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
prt = ua.substr(pp, blPos - pp);
|
|
96
|
-
pp = blPos + 1;
|
|
97
|
-
}
|
|
98
|
-
let sepPos = prt.indexOf('/');
|
|
99
|
-
if (sepPos > 0) {
|
|
100
|
-
name = prt.substr(0, sepPos);
|
|
101
|
-
version = prt.substr(sepPos + 1);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
name = prt;
|
|
105
|
-
}
|
|
106
|
-
while (ua[pp] === ' ' && pp < ua.length) {
|
|
107
|
-
pp++;
|
|
108
|
-
}
|
|
109
|
-
if (ua[pp] === '(') {
|
|
110
|
-
pp++;
|
|
111
|
-
let commEnd = ua.indexOf(')', pp);
|
|
112
|
-
comment = ua.substr(pp, commEnd - pp);
|
|
113
|
-
pp = commEnd + 1;
|
|
114
|
-
}
|
|
115
|
-
while (ua[pp] === ' ' && pp < ua.length) {
|
|
116
|
-
pp++;
|
|
117
|
-
}
|
|
118
|
-
const uac = new UserAgentComponent(name, version, comment);
|
|
119
|
-
console.debug("user agent comp: " + uac);
|
|
120
|
-
this.comps.push(uac);
|
|
121
|
-
}
|
|
122
|
-
let detPlatf = null;
|
|
123
|
-
if (this.runsOnOS(Platform.Android)) {
|
|
124
|
-
detPlatf = Platform.Android;
|
|
125
|
-
}
|
|
126
|
-
else if (this.runsOnOS(Platform.Windows)) {
|
|
127
|
-
detPlatf = Platform.Windows;
|
|
128
|
-
}
|
|
129
|
-
else if (this.runsOnOS(Platform.macOS)) {
|
|
130
|
-
detPlatf = Platform.macOS;
|
|
131
|
-
}
|
|
132
|
-
let detBr = null;
|
|
133
|
-
if (this.matchesBrowser(Browser.Firefox)) {
|
|
134
|
-
detBr = Browser.Firefox;
|
|
135
|
-
}
|
|
136
|
-
else if (this.matchesBrowser(Browser.Chrome)) {
|
|
137
|
-
detBr = Browser.Chrome;
|
|
138
|
-
}
|
|
139
|
-
else if (this.matchesBrowser(Browser.Safari)) {
|
|
140
|
-
detBr = Browser.Safari;
|
|
141
|
-
}
|
|
142
|
-
let detBrVers = null;
|
|
143
|
-
if (detBr) {
|
|
144
|
-
detBrVers = this.browserVersion(detBr);
|
|
145
|
-
}
|
|
146
|
-
this.userAgent = new UserAgent(detPlatf, detBr, detBrVers);
|
|
147
|
-
}
|
|
148
|
-
matchesBrowser(browserName) {
|
|
149
|
-
for (let ci = 0; ci < this.comps.length; ci++) {
|
|
150
|
-
let bn = this.comps[ci].name;
|
|
151
|
-
let bnRe = new RegExp(browserName, 'i');
|
|
152
|
-
if (bn.match(bnRe)) {
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
browserVersion(browserName) {
|
|
159
|
-
for (let ci = 0; ci < this.comps.length; ci++) {
|
|
160
|
-
const comp = this.comps[ci];
|
|
161
|
-
const bn = comp.name;
|
|
162
|
-
const bnRe = new RegExp(browserName, 'i');
|
|
163
|
-
if (bn.match(bnRe)) {
|
|
164
|
-
return comp.version;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return null;
|
|
168
|
-
}
|
|
169
|
-
runsOnOS(os) {
|
|
170
|
-
for (let ci = 0; ci < this.comps.length; ci++) {
|
|
171
|
-
let cc = this.comps[ci].comment;
|
|
172
|
-
if (cc) {
|
|
173
|
-
var osRe = new RegExp(os, 'i');
|
|
174
|
-
if (cc.match(osRe)) {
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
static userAgent() {
|
|
182
|
-
if (!this.instance) {
|
|
183
|
-
this.instance = new UserAgentBuilder();
|
|
184
|
-
}
|
|
185
|
-
this.instance.build();
|
|
186
|
-
return this.instance.userAgent;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
UserAgentBuilder.instance = undefined;
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWEtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3V0aWxzL3VhLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW1CLElBQVcsRUFBUSxPQUFtQixFQUFRLE9BQWU7UUFBN0QsU0FBSSxHQUFKLElBQUksQ0FBTztRQUFRLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBUSxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBRWhGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxJQUFJLEdBQUMsR0FBRyxDQUFDO1FBQ3hCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBQztZQUNkLENBQUMsR0FBQyxDQUFDLEdBQUMsSUFBSSxHQUFDLElBQUksQ0FBQyxPQUFPLEdBQUMsR0FBRyxDQUFDO1NBQzNCO1FBQ0QsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFDO1lBQ2QsQ0FBQyxHQUFDLENBQUMsR0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDLE9BQU8sR0FBQyxHQUFHLENBQUM7U0FDM0I7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDRjtBQUNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBQyxTQUFTLENBQUM7QUFDcEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFDLFFBQVEsQ0FBQztBQUNsQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUMsUUFBUSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBQyxNQUFNLENBQUM7QUFJOUIsTUFBTSxDQUFOLElBQVksT0FBdUU7QUFBbkYsV0FBWSxPQUFPO0lBQUUsOEJBQWlCLENBQUE7SUFBQyw0QkFBZSxDQUFBO0lBQUMsNEJBQWUsQ0FBQTtJQUFDLHdCQUFXLENBQUE7QUFBQSxDQUFDLEVBQXZFLE9B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QUksZ0JBQWdCLEVBQUUsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUVuQyxDQUFDOztBQTdJTSx5QkFBUSxHQUE0QixTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVXNlckFnZW50Q29tcG9uZW50e1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOnN0cmluZyxwdWJsaWMgdmVyc2lvbjpzdHJpbmd8bnVsbCxwdWJsaWMgY29tbWVudD86c3RyaW5nKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcoKTpzdHJpbmd7XHJcbiAgICBsZXQgcz0nWycrdGhpcy5uYW1lKyddJztcclxuICAgIGlmKHRoaXMudmVyc2lvbil7XHJcbiAgICAgIHM9cysnIFsnK3RoaXMudmVyc2lvbisnXSc7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbW1lbnQpe1xyXG4gICAgICBzPXMrJyBbJyt0aGlzLmNvbW1lbnQrJ10nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHM7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjb25zdCBOQU1FX0ZJUkVGT1g9J0ZpcmVmb3gnO1xyXG5leHBvcnQgY29uc3QgTkFNRV9DSFJPTUU9J0Nocm9tZSc7XHJcbmV4cG9ydCBjb25zdCBOQU1FX1NBRkFSST0nU2FmYXJpJztcclxuZXhwb3J0IGNvbnN0IE5BTUVfRURHRT0nRWRnZSc7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBlbnVtIEJyb3dzZXIge0ZpcmVmb3g9J0ZpcmVmb3gnLENocm9tZT0nQ2hyb21lJyxTYWZhcmk9J1NhZmFyaScsRWRnZT0nRWRnZSd9XHJcblxyXG5leHBvcnQgY29uc3QgT1NfV0lORE9XUz0nV2luZG93cyc7XHJcbmV4cG9ydCBjb25zdCBPU19BTkRST0lEPSdBbmRyb2lkJztcclxuXHJcbmV4cG9ydCBlbnVtIFBsYXRmb3JtIHtXaW5kb3dzPSdXaW5kb3dzJyxBbmRyb2lkPSdBbmRyb2lkJyxtYWNPUz0nTUFDIE9TIFgnfVxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJBZ2VudHtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RldGVjdGVkUGxhdGZvcm06UGxhdGZvcm18bnVsbCxwcml2YXRlIF9kZXRlY3RlZEJyb3dzZXI6QnJvd3NlcnxudWxsLHByaXZhdGUgX2RldGVjdGVkQnJvd3NlclZlcnNpb246c3RyaW5nfG51bGw9bnVsbCkge1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRldGVjdGVkQnJvd3NlcigpOiBCcm93c2VyIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGV0ZWN0ZWRCcm93c2VyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRldGVjdGVkQnJvd3NlclZlcnNpb24oKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGV0ZWN0ZWRCcm93c2VyVmVyc2lvbjtcclxuICB9XHJcblxyXG4gIGdldCBkZXRlY3RlZFBsYXRmb3JtKCk6IFBsYXRmb3JtIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGV0ZWN0ZWRQbGF0Zm9ybTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVXNlckFnZW50QnVpbGRlciB7XHJcbiAgc3RhdGljIGluc3RhbmNlOlVzZXJBZ2VudEJ1aWxkZXJ8dW5kZWZpbmVkPXVuZGVmaW5lZDtcclxuICBwcml2YXRlIGNvbXBzOkFycmF5PFVzZXJBZ2VudENvbXBvbmVudD49bmV3IEFycmF5PFVzZXJBZ2VudENvbXBvbmVudD4oKTtcclxuICBwcml2YXRlIHVzZXJBZ2VudCE6VXNlckFnZW50O1xyXG5cclxuICBwcml2YXRlIGJ1aWxkKCkge1xyXG5cclxuICAgIC8vIC8vIEB0cy1pZ25vcmVcclxuICAgIC8vIGlmKG5hdmlnYXRvci51c2VyQWdlbnREYXRhKXtcclxuICAgIC8vICAgLy8gbWF5YmUgd2UgY2FuIHVzZSB0aGlzIGluICB0aGUgZnV0dXJlXHJcbiAgICAvLyAgIGNvbnNvbGUuaW5mbyhcIkJyb3dzZXIgcHJvdmlkZXMgdXNlckFnZW50RGF0YTpcIik7XHJcbiAgICAvL1xyXG4gICAgLy8gICBjb25zb2xlLmluZm8oXCJCcmFuZHM6XCIpO1xyXG4gICAgLy8gICAvLyBAdHMtaWdub3JlXHJcbiAgICAvLyAgIG5hdmlnYXRvci51c2VyQWdlbnREYXRhLmJyYW5kcy5mb3JFYWNoKChicj0+e1xyXG4gICAgLy8gICAgIGNvbnNvbGUuaW5mbyhici5icmFuZCArXCIgXCIrYnIudmVyc2lvbik7XHJcbiAgICAvLyAgIH0pKVxyXG4gICAgLy8gICAvLyBAdHMtaWdub3JlXHJcbiAgICAvLyAgIGNvbnNvbGUuaW5mbyhcIlBsYXRmb3JtOiBcIituYXZpZ2F0b3IudXNlckFnZW50RGF0YS5wbGF0Zm9ybSk7XHJcbiAgICAvLyAgIC8vIEB0cy1pZ25vcmVcclxuICAgIC8vICAgY29uc29sZS5pbmZvKFwiTW9iaWxlOlwiK25hdmlnYXRvci51c2VyQWdlbnREYXRhLm1vYmlsZSk7XHJcbiAgICAvLyAgIC8vIEB0cy1pZ25vcmVcclxuICAgIC8vICAgLy9jb25zb2xlLmluZm8obmF2aWdhdG9yLnVzZXJBZ2VudERhdGEudG9KU09OKCkpO1xyXG4gICAgLy8gfWVsc2Uge1xyXG4gICAgLy8gICBjb25zb2xlLmluZm8oXCJCcm93c2VyIGRvZXMgbm90IHByb3ZpZGUgdXNlckFnZW50RGF0YS5cIik7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgbGV0IHVhPW5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICBjb25zb2xlLmRlYnVnKFwiVXNlciBhZ2VudDogXCIrdWEpO1xyXG4gICAgdGhpcy5jb21wcyA9IG5ldyBBcnJheTxVc2VyQWdlbnRDb21wb25lbnQ+KCk7XHJcblxyXG4gICAgbGV0IHBwID0gMDtcclxuICAgIHdoaWxlIChwcCA8IHVhLmxlbmd0aCkge1xyXG4gICAgICAvL3BhcnNlIG5hbWUvdmVyc2lvblxyXG4gICAgICBsZXQgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGxcclxuICAgICAgbGV0IHZlcnNpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgICBsZXQgY29tbWVudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgICAgbGV0IGJsUG9zID0gdWEuaW5kZXhPZignICcsIHBwKTtcclxuICAgICAgbGV0IHBydDogc3RyaW5nO1xyXG4gICAgICAvLyBUT0RPIFJlcGxhY2Ugc3Vic3RyIHdpdGggc3Vic3RyaW5nICg/KVxyXG4gICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MjY0MDI3MS93aHktaXMtc3RyaW5nLXByb3RvdHlwZS1zdWJzdHItZGVwcmVjYXRlZFxyXG4gICAgICBpZiAoYmxQb3MgPT0gLTEpIHtcclxuICAgICAgICBwcnQgPSB1YS5zdWJzdHIocHApO1xyXG4gICAgICAgIHBwICs9IHBydC5sZW5ndGg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcHJ0ID0gdWEuc3Vic3RyKHBwLCBibFBvcyAtIHBwKTtcclxuICAgICAgICBwcCA9IGJsUG9zICsgMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgc2VwUG9zID0gcHJ0LmluZGV4T2YoJy8nKTtcclxuICAgICAgaWYgKHNlcFBvcyA+IDApIHtcclxuICAgICAgICBuYW1lID0gcHJ0LnN1YnN0cigwLCBzZXBQb3MpO1xyXG4gICAgICAgIHZlcnNpb24gPSBwcnQuc3Vic3RyKHNlcFBvcyArIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5hbWUgPSBwcnQ7XHJcbiAgICAgIH1cclxuICAgICAgd2hpbGUgKHVhW3BwXSA9PT0gJyAnICYmIHBwIDwgdWEubGVuZ3RoKSB7XHJcbiAgICAgICAgcHArKztcclxuICAgICAgfVxyXG4gICAgICBpZiAodWFbcHBdID09PSAnKCcpIHtcclxuICAgICAgICBwcCsrO1xyXG4gICAgICAgIGxldCBjb21tRW5kID0gdWEuaW5kZXhPZignKScsIHBwKTtcclxuICAgICAgICBjb21tZW50ID0gdWEuc3Vic3RyKHBwLCBjb21tRW5kIC0gcHApO1xyXG4gICAgICAgIHBwID0gY29tbUVuZCArIDE7XHJcbiAgICAgIH1cclxuICAgICAgd2hpbGUgKHVhW3BwXSA9PT0gJyAnICYmIHBwIDwgdWEubGVuZ3RoKSB7XHJcbiAgICAgICAgcHArKztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB1YWM9bmV3IFVzZXJBZ2VudENvbXBvbmVudChuYW1lLCB2ZXJzaW9uLCBjb21tZW50KTtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcInVzZXIgYWdlbnQgY29tcDogXCIrdWFjKTtcclxuICAgICAgdGhpcy5jb21wcy5wdXNoKHVhYyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRldFBsYXRmOlBsYXRmb3JtfG51bGw9bnVsbDtcclxuICAgIGlmKHRoaXMucnVuc09uT1MoUGxhdGZvcm0uQW5kcm9pZCkpe1xyXG4gICAgICBkZXRQbGF0Zj1QbGF0Zm9ybS5BbmRyb2lkO1xyXG4gICAgfWVsc2UgaWYodGhpcy5ydW5zT25PUyhQbGF0Zm9ybS5XaW5kb3dzKSl7XHJcbiAgICAgIGRldFBsYXRmPVBsYXRmb3JtLldpbmRvd3M7XHJcbiAgICB9ZWxzZSBpZih0aGlzLnJ1bnNPbk9TKFBsYXRmb3JtLm1hY09TKSl7XHJcbiAgICAgIGRldFBsYXRmPVBsYXRmb3JtLm1hY09TO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgbGV0IGRldEJyOkJyb3dzZXJ8bnVsbD1udWxsO1xyXG4gICAgaWYodGhpcy5tYXRjaGVzQnJvd3NlcihCcm93c2VyLkZpcmVmb3gpKXtcclxuICAgICAgZGV0QnI9QnJvd3Nlci5GaXJlZm94O1xyXG4gICAgfWVsc2UgaWYodGhpcy5tYXRjaGVzQnJvd3NlcihCcm93c2VyLkNocm9tZSkpe1xyXG4gICAgICBkZXRCcj1Ccm93c2VyLkNocm9tZTtcclxuICAgIH1lbHNlIGlmKHRoaXMubWF0Y2hlc0Jyb3dzZXIoQnJvd3Nlci5TYWZhcmkpKXtcclxuICAgICAgZGV0QnI9QnJvd3Nlci5TYWZhcmk7XHJcbiAgICB9XHJcbiAgICBsZXQgZGV0QnJWZXJzID1udWxsO1xyXG4gICAgaWYoZGV0QnIpIHtcclxuICAgICBkZXRCclZlcnM9dGhpcy5icm93c2VyVmVyc2lvbihkZXRCcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJBZ2VudD1uZXcgVXNlckFnZW50KGRldFBsYXRmLGRldEJyLGRldEJyVmVycyk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXRjaGVzQnJvd3Nlcihicm93c2VyTmFtZTpzdHJpbmcpe1xyXG4gICAgZm9yKGxldCBjaT0wO2NpPHRoaXMuY29tcHMubGVuZ3RoO2NpKyspe1xyXG4gICAgICBsZXQgYm49dGhpcy5jb21wc1tjaV0ubmFtZVxyXG4gICAgICBsZXQgYm5SZT1uZXcgUmVnRXhwKGJyb3dzZXJOYW1lLCdpJyk7XHJcbiAgICAgIGlmKGJuLm1hdGNoKGJuUmUpKXtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBicm93c2VyVmVyc2lvbihicm93c2VyTmFtZTpzdHJpbmcpOnN0cmluZ3xudWxse1xyXG4gICAgZm9yKGxldCBjaT0wO2NpPHRoaXMuY29tcHMubGVuZ3RoO2NpKyspe1xyXG4gICAgICBjb25zdCBjb21wPXRoaXMuY29tcHNbY2ldO1xyXG4gICAgICBjb25zdCBibj1jb21wLm5hbWU7XHJcbiAgICAgIGNvbnN0IGJuUmU9bmV3IFJlZ0V4cChicm93c2VyTmFtZSwnaScpO1xyXG4gICAgICBpZihibi5tYXRjaChiblJlKSl7XHJcbiAgICAgICAgcmV0dXJuIGNvbXAudmVyc2lvbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJ1bnNPbk9TKG9zOnN0cmluZyk6Ym9vbGVhbntcclxuICAgIGZvcihsZXQgY2k9MDtjaTx0aGlzLmNvbXBzLmxlbmd0aDtjaSsrKXtcclxuICAgICAgbGV0IGNjPXRoaXMuY29tcHNbY2ldLmNvbW1lbnRcclxuICAgICAgaWYoY2Mpe1xyXG4gICAgICAgIHZhciBvc1JlID0gbmV3IFJlZ0V4cChvcywnaScpO1xyXG4gICAgICAgIGlmKGNjLm1hdGNoKG9zUmUpKXtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHVzZXJBZ2VudCgpOlVzZXJBZ2VudHtcclxuICAgICAgaWYoIXRoaXMuaW5zdGFuY2Upe1xyXG4gICAgICAgIHRoaXMuaW5zdGFuY2U9bmV3IFVzZXJBZ2VudEJ1aWxkZXIoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmluc3RhbmNlLmJ1aWxkKCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlLnVzZXJBZ2VudDtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|