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.
Files changed (220) hide show
  1. package/esm2022/lib/action/action.mjs +73 -0
  2. package/{esm2020 → esm2022}/lib/audio/array_audio_buffer.mjs +163 -163
  3. package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_input_stream.mjs +85 -85
  4. package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_random_access_stream.mjs +15 -15
  5. package/esm2022/lib/audio/audio_data_holder.mjs +264 -0
  6. package/{esm2020 → esm2022}/lib/audio/audio_display.mjs +93 -93
  7. package/{esm2020 → esm2022}/lib/audio/audio_player.mjs +213 -213
  8. package/esm2022/lib/audio/capture/capture.mjs +855 -0
  9. package/esm2022/lib/audio/context.mjs +79 -0
  10. package/{esm2020 → esm2022}/lib/audio/dsp/level_measure.mjs +515 -515
  11. package/{esm2020 → esm2022}/lib/audio/format.mjs +16 -16
  12. package/esm2022/lib/audio/impl/wavformat.mjs +6 -0
  13. package/{esm2020 → esm2022}/lib/audio/impl/wavreader.mjs +133 -133
  14. package/esm2022/lib/audio/impl/wavwriter.mjs +105 -0
  15. package/esm2022/lib/audio/inddb_audio_buffer.mjs +508 -0
  16. package/{esm2020 → esm2022}/lib/audio/io/stream.mjs +58 -58
  17. package/esm2022/lib/audio/net_audio_buffer.mjs +293 -0
  18. package/{esm2020 → esm2022}/lib/audio/persistor.mjs +80 -80
  19. package/{esm2020 → esm2022}/lib/audio/playback/array_audio_buffer_source_node.mjs +125 -125
  20. package/esm2022/lib/audio/playback/audio_source_node.mjs +18 -0
  21. package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +167 -0
  22. package/{esm2020 → esm2022}/lib/audio/playback/inddb_audio_buffer_source_node.mjs +166 -166
  23. package/{esm2020 → esm2022}/lib/audio/playback/net_audio_buffer_source_node.mjs +217 -217
  24. package/esm2022/lib/audio/playback/player.mjs +402 -0
  25. package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +347 -0
  26. package/{esm2020 → esm2022}/lib/audio/ui/audio_display_control.mjs +65 -65
  27. package/{esm2020 → esm2022}/lib/audio/ui/audio_display_scroll_pane.mjs +139 -139
  28. package/{esm2020 → esm2022}/lib/audio/ui/audiosignal.mjs +524 -524
  29. package/{esm2020 → esm2022}/lib/audio/ui/common.mjs +18 -18
  30. package/esm2022/lib/audio/ui/container.mjs +414 -0
  31. package/{esm2020 → esm2022}/lib/audio/ui/livelevel.mjs +352 -352
  32. package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +11 -0
  33. package/esm2022/lib/audio/ui/sonagram.mjs +900 -0
  34. package/esm2022/lib/db/inddb.mjs +120 -0
  35. package/esm2022/lib/dsp/utils.mjs +48 -0
  36. package/{esm2020 → esm2022}/lib/io/BinaryReader.mjs +84 -84
  37. package/esm2022/lib/io/BinaryWriter.mjs +74 -0
  38. package/{esm2020 → esm2022}/lib/io/stream.mjs +258 -258
  39. package/{esm2020 → esm2022}/lib/math/2d/geometry.mjs +27 -27
  40. package/esm2022/lib/math/complex.mjs +58 -0
  41. package/{esm2020 → esm2022}/lib/math/dft.mjs +195 -195
  42. package/{esm2020 → esm2022}/lib/media/utils.mjs +13 -13
  43. package/esm2022/lib/net/uploader.mjs +367 -0
  44. package/{esm2020 → esm2022}/lib/recorder_component.mjs +64 -64
  45. package/esm2022/lib/speechrecorder/project/project.mjs +49 -0
  46. package/esm2022/lib/speechrecorder/project/project.service.mjs +64 -0
  47. package/{esm2020 → esm2022}/lib/speechrecorder/recording.mjs +123 -123
  48. package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +218 -0
  49. package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +1014 -0
  50. package/{esm2020 → esm2022}/lib/speechrecorder/script/script.mjs +114 -114
  51. package/{esm2020 → esm2022}/lib/speechrecorder/script/script.service.mjs +47 -47
  52. package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +1179 -0
  53. package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +668 -0
  54. package/esm2022/lib/speechrecorder/session/controlpanel.mjs +416 -0
  55. package/{esm2020 → esm2022}/lib/speechrecorder/session/item.mjs +29 -29
  56. package/{esm2020 → esm2022}/lib/speechrecorder/session/progress.mjs +69 -69
  57. package/{esm2020 → esm2022}/lib/speechrecorder/session/prompting.mjs +571 -571
  58. package/{esm2020 → esm2022}/lib/speechrecorder/session/recorder_combi_pane.mjs +65 -65
  59. package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +195 -0
  60. package/{esm2020 → esm2022}/lib/speechrecorder/session/recording_list.mjs +103 -103
  61. package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +63 -63
  62. package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +51 -51
  63. package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +104 -104
  64. package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +381 -381
  65. package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file.mjs +67 -67
  66. package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +288 -0
  67. package/{esm2020 → esm2022}/lib/speechrecorder/session/session.mjs +1 -1
  68. package/esm2022/lib/speechrecorder/session/session.service.mjs +69 -0
  69. package/{esm2020 → esm2022}/lib/speechrecorder/session/session_finished_dialog.mjs +29 -29
  70. package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +1386 -0
  71. package/{esm2020 → esm2022}/lib/speechrecorder/session/warning_bar.mjs +28 -28
  72. package/{esm2020 → esm2022}/lib/speechrecorder/spruploader.mjs +22 -22
  73. package/{esm2020 → esm2022}/lib/speechrecorder/startstopsignal/startstopsignal.mjs +1 -1
  74. package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +57 -0
  75. package/{esm2020 → esm2022}/lib/speechrecorderng.component.mjs +388 -388
  76. package/{esm2020 → esm2022}/lib/speechrecorderng.module.mjs +100 -100
  77. package/{esm2020 → esm2022}/lib/spr.config.mjs +26 -26
  78. package/{esm2020 → esm2022}/lib/spr.module.version.mjs +2 -2
  79. package/{esm2020 → esm2022}/lib/ui/canvas_layer_comp.mjs +38 -38
  80. package/{esm2020 → esm2022}/lib/ui/message_dialog.mjs +30 -30
  81. package/esm2022/lib/ui/recordingitem_display.mjs +253 -0
  82. package/{esm2020 → esm2022}/lib/ui/responsive_component.mjs +24 -24
  83. package/{esm2020 → esm2022}/lib/utils/scrollIntoViewToBottom.mjs +23 -23
  84. package/esm2022/lib/utils/ua-parser.mjs +190 -0
  85. package/esm2022/lib/utils/utils.mjs +105 -0
  86. package/esm2022/lib/utils/wake_lock.mjs +114 -0
  87. package/{esm2020 → esm2022}/lib/utils/wake_lock_media.mjs +1 -1
  88. package/{esm2020 → esm2022}/public-api.mjs +33 -33
  89. package/{esm2020 → esm2022}/speechrecorderng.mjs +4 -4
  90. package/{fesm2020 → fesm2022}/speechrecorderng.mjs +16518 -16454
  91. package/fesm2022/speechrecorderng.mjs.map +1 -0
  92. package/index.d.ts +5 -5
  93. package/lib/action/action.d.ts +27 -27
  94. package/lib/audio/array_audio_buffer.d.ts +31 -31
  95. package/lib/audio/array_audio_buffer_input_stream.d.ts +14 -14
  96. package/lib/audio/array_audio_buffer_random_access_stream.d.ts +9 -9
  97. package/lib/audio/audio_data_holder.d.ts +84 -84
  98. package/lib/audio/audio_display.d.ts +36 -36
  99. package/lib/audio/audio_player.d.ts +47 -47
  100. package/lib/audio/capture/capture.d.ts +67 -67
  101. package/lib/audio/context.d.ts +6 -6
  102. package/lib/audio/dsp/level_measure.d.ts +60 -60
  103. package/lib/audio/format.d.ts +11 -11
  104. package/lib/audio/impl/wavformat.d.ts +5 -5
  105. package/lib/audio/impl/wavreader.d.ts +16 -16
  106. package/lib/audio/impl/wavwriter.d.ts +13 -13
  107. package/lib/audio/inddb_audio_buffer.d.ts +68 -68
  108. package/lib/audio/io/stream.d.ts +28 -28
  109. package/lib/audio/net_audio_buffer.d.ts +57 -57
  110. package/lib/audio/persistor.d.ts +29 -29
  111. package/lib/audio/playback/array_audio_buffer_source_node.d.ts +18 -18
  112. package/lib/audio/playback/audio_source_node.d.ts +10 -10
  113. package/lib/audio/playback/audio_source_worklet_module_loader.d.ts +4 -4
  114. package/lib/audio/playback/inddb_audio_buffer_source_node.d.ts +21 -21
  115. package/lib/audio/playback/net_audio_buffer_source_node.d.ts +27 -27
  116. package/lib/audio/playback/player.d.ts +65 -65
  117. package/lib/audio/ui/audio_canvas_layer_comp.d.ts +68 -68
  118. package/lib/audio/ui/audio_display_control.d.ts +25 -25
  119. package/lib/audio/ui/audio_display_scroll_pane.d.ts +26 -26
  120. package/lib/audio/ui/audiosignal.d.ts +30 -30
  121. package/lib/audio/ui/common.d.ts +11 -11
  122. package/lib/audio/ui/container.d.ts +63 -63
  123. package/lib/audio/ui/livelevel.d.ts +60 -60
  124. package/lib/audio/ui/scroll_pane_horizontal.d.ts +5 -5
  125. package/lib/audio/ui/sonagram.d.ts +37 -37
  126. package/lib/db/inddb.d.ts +21 -21
  127. package/lib/dsp/utils.d.ts +19 -19
  128. package/lib/io/BinaryReader.d.ts +18 -18
  129. package/lib/io/BinaryWriter.d.ts +15 -15
  130. package/lib/io/stream.d.ts +59 -59
  131. package/lib/math/2d/geometry.d.ts +18 -18
  132. package/lib/math/complex.d.ts +17 -17
  133. package/lib/math/dft.d.ts +22 -22
  134. package/lib/media/utils.d.ts +3 -3
  135. package/lib/net/uploader.d.ts +81 -81
  136. package/lib/recorder_component.d.ts +16 -16
  137. package/lib/speechrecorder/project/project.d.ts +59 -59
  138. package/lib/speechrecorder/project/project.service.d.ts +21 -21
  139. package/lib/speechrecorder/recording.d.ts +51 -51
  140. package/lib/speechrecorder/recordings/basic_recording.service.d.ts +27 -27
  141. package/lib/speechrecorder/recordings/recordings.service.d.ts +48 -48
  142. package/lib/speechrecorder/script/script.d.ts +80 -79
  143. package/lib/speechrecorder/script/script.service.d.ts +16 -16
  144. package/lib/speechrecorder/session/audiorecorder.d.ts +122 -122
  145. package/lib/speechrecorder/session/basicrecorder.d.ts +139 -139
  146. package/lib/speechrecorder/session/controlpanel.d.ts +109 -107
  147. package/lib/speechrecorder/session/item.d.ts +12 -12
  148. package/lib/speechrecorder/session/progress.d.ts +17 -17
  149. package/lib/speechrecorder/session/prompting.d.ts +121 -121
  150. package/lib/speechrecorder/session/recorder_combi_pane.d.ts +32 -32
  151. package/lib/speechrecorder/session/recording_file_cache.d.ts +33 -33
  152. package/lib/speechrecorder/session/recording_list.d.ts +24 -24
  153. package/lib/speechrecorder/session/recordingfile/recording-file-meta.component.d.ts +15 -15
  154. package/lib/speechrecorder/session/recordingfile/recording-file-navi.component.d.ts +20 -20
  155. package/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.d.ts +31 -31
  156. package/lib/speechrecorder/session/recordingfile/recording-file-view.component.d.ts +55 -55
  157. package/lib/speechrecorder/session/recordingfile/recording-file.d.ts +7 -7
  158. package/lib/speechrecorder/session/recordingfile/recordingfile-service.d.ts +24 -24
  159. package/lib/speechrecorder/session/session.d.ts +15 -15
  160. package/lib/speechrecorder/session/session.service.d.ts +20 -20
  161. package/lib/speechrecorder/session/session_finished_dialog.d.ts +10 -10
  162. package/lib/speechrecorder/session/sessionmanager.d.ts +129 -123
  163. package/lib/speechrecorder/session/warning_bar.d.ts +8 -8
  164. package/lib/speechrecorder/spruploader.d.ts +11 -11
  165. package/lib/speechrecorder/startstopsignal/startstopsignal.d.ts +10 -10
  166. package/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.d.ts +11 -11
  167. package/lib/speechrecorderng.component.d.ts +61 -61
  168. package/lib/speechrecorderng.module.d.ts +56 -56
  169. package/lib/spr.config.d.ts +17 -17
  170. package/lib/spr.module.version.d.ts +1 -1
  171. package/lib/ui/canvas_layer_comp.d.ts +13 -13
  172. package/lib/ui/message_dialog.d.ts +10 -10
  173. package/lib/ui/recordingitem_display.d.ts +84 -84
  174. package/lib/ui/responsive_component.d.ts +9 -9
  175. package/lib/utils/scrollIntoViewToBottom.d.ts +9 -9
  176. package/lib/utils/ua-parser.d.ts +43 -43
  177. package/lib/utils/utils.d.ts +19 -19
  178. package/lib/utils/wake_lock.d.ts +23 -23
  179. package/lib/utils/wake_lock_media.d.ts +1 -1
  180. package/package.json +17 -23
  181. package/public-api.d.ts +33 -33
  182. package/esm2020/lib/action/action.mjs +0 -73
  183. package/esm2020/lib/audio/audio_data_holder.mjs +0 -264
  184. package/esm2020/lib/audio/capture/capture.mjs +0 -855
  185. package/esm2020/lib/audio/context.mjs +0 -79
  186. package/esm2020/lib/audio/impl/wavformat.mjs +0 -6
  187. package/esm2020/lib/audio/impl/wavwriter.mjs +0 -105
  188. package/esm2020/lib/audio/inddb_audio_buffer.mjs +0 -508
  189. package/esm2020/lib/audio/net_audio_buffer.mjs +0 -293
  190. package/esm2020/lib/audio/playback/audio_source_node.mjs +0 -18
  191. package/esm2020/lib/audio/playback/audio_source_worklet_module_loader.mjs +0 -167
  192. package/esm2020/lib/audio/playback/player.mjs +0 -402
  193. package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +0 -347
  194. package/esm2020/lib/audio/ui/container.mjs +0 -414
  195. package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +0 -11
  196. package/esm2020/lib/audio/ui/sonagram.mjs +0 -900
  197. package/esm2020/lib/db/inddb.mjs +0 -120
  198. package/esm2020/lib/dsp/utils.mjs +0 -48
  199. package/esm2020/lib/io/BinaryWriter.mjs +0 -74
  200. package/esm2020/lib/math/complex.mjs +0 -58
  201. package/esm2020/lib/net/uploader.mjs +0 -367
  202. package/esm2020/lib/speechrecorder/project/project.mjs +0 -49
  203. package/esm2020/lib/speechrecorder/project/project.service.mjs +0 -64
  204. package/esm2020/lib/speechrecorder/recordings/basic_recording.service.mjs +0 -216
  205. package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +0 -1014
  206. package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +0 -1179
  207. package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +0 -666
  208. package/esm2020/lib/speechrecorder/session/controlpanel.mjs +0 -409
  209. package/esm2020/lib/speechrecorder/session/recording_file_cache.mjs +0 -195
  210. package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +0 -288
  211. package/esm2020/lib/speechrecorder/session/session.service.mjs +0 -69
  212. package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +0 -1333
  213. package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +0 -57
  214. package/esm2020/lib/ui/recordingitem_display.mjs +0 -253
  215. package/esm2020/lib/utils/ua-parser.mjs +0 -190
  216. package/esm2020/lib/utils/utils.mjs +0 -105
  217. package/esm2020/lib/utils/wake_lock.mjs +0 -114
  218. package/fesm2015/speechrecorderng.mjs +0 -17708
  219. package/fesm2015/speechrecorderng.mjs.map +0 -1
  220. package/fesm2020/speechrecorderng.mjs.map +0 -1
@@ -1,38 +1,37 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
2
- import { RecordingList } from "./recording_list";
3
- import { AudioDisplay } from "../../audio/audio_display";
4
- import { ResponsiveComponent } from "../../ui/responsive_component";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/layout";
7
- import * as i2 from "../../audio/audio_display";
8
- import * as i3 from "./recording_list";
9
- export class RecorderCombiPane extends ResponsiveComponent {
10
- constructor(bpo) {
11
- super(bpo);
12
- this.bpo = bpo;
13
- this.selectDisabled = false;
14
- this.selectedRecordingFileChanged = new EventEmitter();
15
- this.selectedRecordingFile = null;
16
- this.audioSignalCollapsed = true;
17
- this.displayAudioClip = null;
18
- }
19
- ngAfterViewInit() {
20
- }
21
- addRecFile(rf) {
22
- this.recordingListComp.addRecFile(rf);
23
- }
24
- setRecFileAudioData(recFile, adh) {
25
- this.recordingListComp.setRecFileAudioData(recFile, adh);
26
- }
27
- selectRecordingFile(rf) {
28
- this.selectedRecordingFileChanged.emit(rf);
29
- }
30
- selectTop() {
31
- this.recordingListComp.selectTop();
32
- }
33
- }
34
- RecorderCombiPanefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
35
- RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
2
+ import { RecordingList } from "./recording_list";
3
+ import { AudioDisplay } from "../../audio/audio_display";
4
+ import { ResponsiveComponent } from "../../ui/responsive_component";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/layout";
7
+ import * as i2 from "../../audio/audio_display";
8
+ import * as i3 from "./recording_list";
9
+ export class RecorderCombiPane extends ResponsiveComponent {
10
+ constructor(bpo) {
11
+ super(bpo);
12
+ this.bpo = bpo;
13
+ this.selectDisabled = false;
14
+ this.selectedRecordingFileChanged = new EventEmitter();
15
+ this.selectedRecordingFile = null;
16
+ this.audioSignalCollapsed = true;
17
+ this.displayAudioClip = null;
18
+ }
19
+ ngAfterViewInit() {
20
+ }
21
+ addRecFile(rf) {
22
+ this.recordingListComp.addRecFile(rf);
23
+ }
24
+ setRecFileAudioData(recFile, adh) {
25
+ this.recordingListComp.setRecFileAudioData(recFile, adh);
26
+ }
27
+ selectRecordingFile(rf) {
28
+ this.selectedRecordingFileChanged.emit(rf);
29
+ }
30
+ selectTop() {
31
+ this.recordingListComp.selectTop();
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RecorderCombiPane, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
36
35
  <div class="scrollList">
37
36
  <app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
38
37
  </div>
@@ -44,9 +43,10 @@ RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
44
43
  [autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
45
44
  [playStopAction]="playStopAction"></app-audiodisplay>
46
45
  </div>
47
- `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "component", type: i2.AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: i3.RecordingList, selector: "app-recordinglist", inputs: ["selectDisabled", "selectedRecordingFile"], outputs: ["selectedRecordingFileChanged"] }] });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, decorators: [{
49
- type: Component,
46
+ `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-mdc-cell,.mat-mdc-header-cell{padding-left:5px;padding-right:5px}.mat-mdc-card,.mat-mdc-card-header,.mat-mdc-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}.spr-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "component", type: i2.AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: i3.RecordingList, selector: "app-recordinglist", inputs: ["selectDisabled", "selectedRecordingFile"], outputs: ["selectedRecordingFileChanged"] }] }); }
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RecorderCombiPane, decorators: [{
49
+ type: Component,
50
50
  args: [{ selector: 'app-recordercombipane', template: `
51
51
  <div class="scrollList">
52
52
  <app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
@@ -59,30 +59,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
59
59
  [autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
60
60
  [playStopAction]="playStopAction"></app-audiodisplay>
61
61
  </div>
62
- `, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"] }]
63
- }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; }, propDecorators: { recordingListComp: [{
64
- type: ViewChild,
65
- args: [RecordingList]
66
- }], selectDisabled: [{
67
- type: Input
68
- }], selectedRecordingFileChanged: [{
69
- type: Output
70
- }], selectedRecordingFile: [{
71
- type: Input
72
- }], audioDisplay: [{
73
- type: ViewChild,
74
- args: [AudioDisplay, { static: true }]
75
- }], audioSignalCollapsed: [{
76
- type: Input
77
- }], displayAudioClip: [{
78
- type: Input
79
- }], playStartAction: [{
80
- type: Input
81
- }], playSelectionAction: [{
82
- type: Input
83
- }], autoPlayOnSelectToggleAction: [{
84
- type: Input
85
- }], playStopAction: [{
86
- type: Input
87
- }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXJfY29tYmlfcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGVyX2NvbWJpX3BhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUcvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBK0RsRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQW1CO0lBZXhELFlBQXNCLEdBQXNCO1FBQzFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWm5DLG1CQUFjLEdBQVMsS0FBSyxDQUFDO1FBQzVCLGlDQUE0QixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ2xFLDBCQUFxQixHQUFvQixJQUFJLENBQUM7UUFHOUMseUJBQW9CLEdBQVUsSUFBSSxDQUFDO1FBQ25DLHFCQUFnQixHQUFtQixJQUFJLENBQUM7SUFRakQsQ0FBQztJQUVELGVBQWU7SUFFZixDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQWdCO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQXFCLEVBQUMsR0FBd0I7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsRUFBZ0I7UUFDbEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzsrR0F0Q1UsaUJBQWlCO21HQUFqQixpQkFBaUIsNmhCQUVqQixhQUFhLCtFQUtiLFlBQVkscUZBL0RiOzs7Ozs7Ozs7Ozs7R0FZVDs0RkE0Q1UsaUJBQWlCO2tCQTVEN0IsU0FBUzsrQkFFRSx1QkFBdUIsWUFFdkI7Ozs7Ozs7Ozs7OztHQVlUO3lHQThDeUIsaUJBQWlCO3NCQUExQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsY0FBYztzQkFBdEIsS0FBSztnQkFDSSw0QkFBNEI7c0JBQXJDLE1BQU07Z0JBQ0UscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVxQyxZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2hDLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge1JlY29yZGluZ0xpc3R9IGZyb20gXCIuL3JlY29yZGluZ19saXN0XCI7XHJcbmltcG9ydCB7QXVkaW9DbGlwfSBmcm9tIFwiLi4vLi4vYXVkaW8vcGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheX0gZnJvbSBcIi4uLy4uL2F1ZGlvL2F1ZGlvX2Rpc3BsYXlcIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuLi8uLi9hdWRpby9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5pbXBvcnQge1Jlc3BvbnNpdmVDb21wb25lbnR9IGZyb20gXCIuLi8uLi91aS9yZXNwb25zaXZlX2NvbXBvbmVudFwiO1xyXG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9sYXlvdXRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1yZWNvcmRlcmNvbWJpcGFuZScsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsTGlzdFwiPlxyXG4gICAgICAgIDxhcHAtcmVjb3JkaW5nbGlzdCBbc2VsZWN0ZWRSZWNvcmRpbmdGaWxlXT1cInNlbGVjdGVkUmVjb3JkaW5nRmlsZVwiIFtzZWxlY3REaXNhYmxlZF09XCJzZWxlY3REaXNhYmxlZFwiIChzZWxlY3RlZFJlY29yZGluZ0ZpbGVDaGFuZ2VkKT1cInNlbGVjdFJlY29yZGluZ0ZpbGUoJGV2ZW50KVwiPjwvYXBwLXJlY29yZGluZ2xpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzYWJsZVwiICAjYXNDdCBbY2xhc3MuYWN0aXZlXT1cIiFhdWRpb1NpZ25hbENvbGxhcHNlZCAmJiAhc2NyZWVuWHNcIj5cclxuICAgICAgPGFwcC1hdWRpb2Rpc3BsYXkgI2F1ZGlvU2lnbmFsQ29udGFpbmVyIFtjbGFzcy5hY3RpdmVdPVwiIWF1ZGlvU2lnbmFsQ29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1ZGlvQ2xpcF09XCJkaXNwbGF5QXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdGFydEFjdGlvbl09XCJwbGF5U3RhcnRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxheVNlbGVjdGlvbkFjdGlvbl09XCJwbGF5U2VsZWN0aW9uQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb25dPVwiYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RvcEFjdGlvbl09XCJwbGF5U3RvcEFjdGlvblwiPjwvYXBwLWF1ZGlvZGlzcGxheT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlOyAvKiB1c2UgYWxsIGhvcml6b250YWwgYXZhaWxhYmxlIHNwYWNlICovXHJcbiAgICBmbGV4OiAxOyAvKiAuLi4gYW5kIGZpbGwgcmVzdCBvZiB2ZXJ0aWNhbCBhdmFpbGFibGUgc3BhY2UgKG90aGVyIGNvbXBvbmVudHMgaGF2ZSBmbGV4IDApICovXHJcbiAgICAvKiBXb3JrYXJvdW5kIGZvciBGaXJlZm94XHJcbiAgICBJZiB0aGUgcHJvZ3Jlc3MgdGFibGUgZ2V0cyBsb25nIChzY3JpcHQgd2l0aCBtYW55IGl0ZW1zKSBGRiBpbmNyZWFzZXMgdGhlIGhlaWdodCBvZiB0aGUgb3ZlcmZsb3cgcHJvZ3Jlc3NDb250YWluZXIgYW5kXHJcbiAgICB0aGUgd2hvbGUgYXBwIGRvZXMgbm90IGZpdCBpbnRvIHRoZSBwYWdlIGFueW1vcmUuIFRoZSBhcHAgb3ZlcmZsb3dzIGFuZCBzaG93cyBhIHZlcnRpY2FsIHNjcm9sbGJhciBmb3IgdGhlIHdob2xlIGFwcC5cclxuICAgIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODYzNjgzMi9maXJlZm94LW92ZXJmbG93LXktbm90LXdvcmtpbmctd2l0aC1uZXN0ZWQtZmxleGJveFxyXG4gICAgKi9cclxuICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuXHJcbiAgfWAsYC5zY3JvbGxMaXN0e1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICB9YCwgYFxyXG4gICAgLmNvbGxhcHNhYmxlIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgfWAsIGBcclxuICAgIC5jb2xsYXBzYWJsZS5hY3RpdmUge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogMHB4O1xyXG4gICAgICBoZWlnaHQ6IDkwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHBhZGRpbmc6IDBweDtcclxuICAgICAgei1pbmRleDogMjAwOyAgLyogTmVlZHMgYSBoaWdoZXIgdmFsdWUgdGhlbiB0aGUgc3RpY2t5IE1hdGVyaWFsIHRhYmxlIGhlYWRlciAod2hpY2ggaXMgei1pbmRleDogMTAwKSAqL1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApXHJcbiAgICB9YF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL3NwZWVjaHJlY29yZGVyX21hdC5zY3NzJ11cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRlckNvbWJpUGFuZSBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0e1xyXG5cclxuICBAVmlld0NoaWxkKFJlY29yZGluZ0xpc3QpIHJlY29yZGluZ0xpc3RDb21wITpSZWNvcmRpbmdMaXN0O1xyXG4gIEBJbnB1dCgpIHNlbGVjdERpc2FibGVkOmJvb2xlYW49ZmFsc2U7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUmVjb3JkaW5nRmlsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSZWNvcmRpbmdGaWxlOlJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG5cclxuICBAVmlld0NoaWxkKEF1ZGlvRGlzcGxheSwgeyBzdGF0aWM6IHRydWUgfSkgYXVkaW9EaXNwbGF5ITogQXVkaW9EaXNwbGF5O1xyXG4gIEBJbnB1dCgpIGF1ZGlvU2lnbmFsQ29sbGFwc2VkOiBib29sZWFuPXRydWU7XHJcbiAgQElucHV0KCkgZGlzcGxheUF1ZGlvQ2xpcDogQXVkaW9DbGlwIHwgbnVsbD1udWxsO1xyXG4gIEBJbnB1dCgpIHBsYXlTdGFydEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U2VsZWN0aW9uQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb246QWN0aW9uPGJvb2xlYW4+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJwbzpCcmVha3BvaW50T2JzZXJ2ZXIpIHtcclxuICAgIHN1cGVyKGJwbyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkUmVjRmlsZShyZjpSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdENvbXAuYWRkUmVjRmlsZShyZik7XHJcbiAgfVxyXG5cclxuICBzZXRSZWNGaWxlQXVkaW9EYXRhKHJlY0ZpbGU6UmVjb3JkaW5nRmlsZSxhZGg6QXVkaW9EYXRhSG9sZGVyfG51bGwpIHtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdENvbXAuc2V0UmVjRmlsZUF1ZGlvRGF0YShyZWNGaWxlLCBhZGgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdFJlY29yZGluZ0ZpbGUocmY6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVjb3JkaW5nRmlsZUNoYW5nZWQuZW1pdChyZik7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUb3AoKSB7XHJcbiAgICB0aGlzLnJlY29yZGluZ0xpc3RDb21wLnNlbGVjdFRvcCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
62
+ `, styles: [".monospaced{font-family:monospace}.mat-mdc-cell,.mat-mdc-header-cell{padding-left:5px;padding-right:5px}.mat-mdc-card,.mat-mdc-card-header,.mat-mdc-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}.spr-button-icon{font-size:24px;vertical-align:middle;overflow:hidden;text-overflow:clip;white-space:nowrap}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"] }]
63
+ }], ctorParameters: () => [{ type: i1.BreakpointObserver }], propDecorators: { recordingListComp: [{
64
+ type: ViewChild,
65
+ args: [RecordingList]
66
+ }], selectDisabled: [{
67
+ type: Input
68
+ }], selectedRecordingFileChanged: [{
69
+ type: Output
70
+ }], selectedRecordingFile: [{
71
+ type: Input
72
+ }], audioDisplay: [{
73
+ type: ViewChild,
74
+ args: [AudioDisplay, { static: true }]
75
+ }], audioSignalCollapsed: [{
76
+ type: Input
77
+ }], displayAudioClip: [{
78
+ type: Input
79
+ }], playStartAction: [{
80
+ type: Input
81
+ }], playSelectionAction: [{
82
+ type: Input
83
+ }], autoPlayOnSelectToggleAction: [{
84
+ type: Input
85
+ }], playStopAction: [{
86
+ type: Input
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXJfY29tYmlfcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGVyX2NvbWJpX3BhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUcvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBK0RsRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQW1CO0lBZXhELFlBQXNCLEdBQXNCO1FBQzFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWm5DLG1CQUFjLEdBQVMsS0FBSyxDQUFDO1FBQzVCLGlDQUE0QixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ2xFLDBCQUFxQixHQUFvQixJQUFJLENBQUM7UUFHOUMseUJBQW9CLEdBQVUsSUFBSSxDQUFDO1FBQ25DLHFCQUFnQixHQUFtQixJQUFJLENBQUM7SUFRakQsQ0FBQztJQUVELGVBQWU7SUFFZixDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQWdCO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQXFCLEVBQUMsR0FBd0I7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsRUFBZ0I7UUFDbEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzhHQXRDVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw2aEJBRWpCLGFBQWEsK0VBS2IsWUFBWSxxRkEvRGI7Ozs7Ozs7Ozs7OztHQVlUOzsyRkE0Q1UsaUJBQWlCO2tCQTVEN0IsU0FBUzsrQkFFRSx1QkFBdUIsWUFFdkI7Ozs7Ozs7Ozs7OztHQVlUO3VGQThDeUIsaUJBQWlCO3NCQUExQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsY0FBYztzQkFBdEIsS0FBSztnQkFDSSw0QkFBNEI7c0JBQXJDLE1BQU07Z0JBQ0UscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVxQyxZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2hDLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge1JlY29yZGluZ0xpc3R9IGZyb20gXCIuL3JlY29yZGluZ19saXN0XCI7XHJcbmltcG9ydCB7QXVkaW9DbGlwfSBmcm9tIFwiLi4vLi4vYXVkaW8vcGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheX0gZnJvbSBcIi4uLy4uL2F1ZGlvL2F1ZGlvX2Rpc3BsYXlcIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuLi8uLi9hdWRpby9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5pbXBvcnQge1Jlc3BvbnNpdmVDb21wb25lbnR9IGZyb20gXCIuLi8uLi91aS9yZXNwb25zaXZlX2NvbXBvbmVudFwiO1xyXG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9sYXlvdXRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1yZWNvcmRlcmNvbWJpcGFuZScsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsTGlzdFwiPlxyXG4gICAgICAgIDxhcHAtcmVjb3JkaW5nbGlzdCBbc2VsZWN0ZWRSZWNvcmRpbmdGaWxlXT1cInNlbGVjdGVkUmVjb3JkaW5nRmlsZVwiIFtzZWxlY3REaXNhYmxlZF09XCJzZWxlY3REaXNhYmxlZFwiIChzZWxlY3RlZFJlY29yZGluZ0ZpbGVDaGFuZ2VkKT1cInNlbGVjdFJlY29yZGluZ0ZpbGUoJGV2ZW50KVwiPjwvYXBwLXJlY29yZGluZ2xpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzYWJsZVwiICAjYXNDdCBbY2xhc3MuYWN0aXZlXT1cIiFhdWRpb1NpZ25hbENvbGxhcHNlZCAmJiAhc2NyZWVuWHNcIj5cclxuICAgICAgPGFwcC1hdWRpb2Rpc3BsYXkgI2F1ZGlvU2lnbmFsQ29udGFpbmVyIFtjbGFzcy5hY3RpdmVdPVwiIWF1ZGlvU2lnbmFsQ29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1ZGlvQ2xpcF09XCJkaXNwbGF5QXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdGFydEFjdGlvbl09XCJwbGF5U3RhcnRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxheVNlbGVjdGlvbkFjdGlvbl09XCJwbGF5U2VsZWN0aW9uQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb25dPVwiYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RvcEFjdGlvbl09XCJwbGF5U3RvcEFjdGlvblwiPjwvYXBwLWF1ZGlvZGlzcGxheT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlOyAvKiB1c2UgYWxsIGhvcml6b250YWwgYXZhaWxhYmxlIHNwYWNlICovXHJcbiAgICBmbGV4OiAxOyAvKiAuLi4gYW5kIGZpbGwgcmVzdCBvZiB2ZXJ0aWNhbCBhdmFpbGFibGUgc3BhY2UgKG90aGVyIGNvbXBvbmVudHMgaGF2ZSBmbGV4IDApICovXHJcbiAgICAvKiBXb3JrYXJvdW5kIGZvciBGaXJlZm94XHJcbiAgICBJZiB0aGUgcHJvZ3Jlc3MgdGFibGUgZ2V0cyBsb25nIChzY3JpcHQgd2l0aCBtYW55IGl0ZW1zKSBGRiBpbmNyZWFzZXMgdGhlIGhlaWdodCBvZiB0aGUgb3ZlcmZsb3cgcHJvZ3Jlc3NDb250YWluZXIgYW5kXHJcbiAgICB0aGUgd2hvbGUgYXBwIGRvZXMgbm90IGZpdCBpbnRvIHRoZSBwYWdlIGFueW1vcmUuIFRoZSBhcHAgb3ZlcmZsb3dzIGFuZCBzaG93cyBhIHZlcnRpY2FsIHNjcm9sbGJhciBmb3IgdGhlIHdob2xlIGFwcC5cclxuICAgIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODYzNjgzMi9maXJlZm94LW92ZXJmbG93LXktbm90LXdvcmtpbmctd2l0aC1uZXN0ZWQtZmxleGJveFxyXG4gICAgKi9cclxuICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuXHJcbiAgfWAsYC5zY3JvbGxMaXN0e1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICB9YCwgYFxyXG4gICAgLmNvbGxhcHNhYmxlIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgfWAsIGBcclxuICAgIC5jb2xsYXBzYWJsZS5hY3RpdmUge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogMHB4O1xyXG4gICAgICBoZWlnaHQ6IDkwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHBhZGRpbmc6IDBweDtcclxuICAgICAgei1pbmRleDogMjAwOyAgLyogTmVlZHMgYSBoaWdoZXIgdmFsdWUgdGhlbiB0aGUgc3RpY2t5IE1hdGVyaWFsIHRhYmxlIGhlYWRlciAod2hpY2ggaXMgei1pbmRleDogMTAwKSAqL1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApXHJcbiAgICB9YF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL3NwZWVjaHJlY29yZGVyX21hdC5zY3NzJ11cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRlckNvbWJpUGFuZSBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0e1xyXG5cclxuICBAVmlld0NoaWxkKFJlY29yZGluZ0xpc3QpIHJlY29yZGluZ0xpc3RDb21wITpSZWNvcmRpbmdMaXN0O1xyXG4gIEBJbnB1dCgpIHNlbGVjdERpc2FibGVkOmJvb2xlYW49ZmFsc2U7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUmVjb3JkaW5nRmlsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSZWNvcmRpbmdGaWxlOlJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG5cclxuICBAVmlld0NoaWxkKEF1ZGlvRGlzcGxheSwgeyBzdGF0aWM6IHRydWUgfSkgYXVkaW9EaXNwbGF5ITogQXVkaW9EaXNwbGF5O1xyXG4gIEBJbnB1dCgpIGF1ZGlvU2lnbmFsQ29sbGFwc2VkOiBib29sZWFuPXRydWU7XHJcbiAgQElucHV0KCkgZGlzcGxheUF1ZGlvQ2xpcDogQXVkaW9DbGlwIHwgbnVsbD1udWxsO1xyXG4gIEBJbnB1dCgpIHBsYXlTdGFydEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U2VsZWN0aW9uQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb246QWN0aW9uPGJvb2xlYW4+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJwbzpCcmVha3BvaW50T2JzZXJ2ZXIpIHtcclxuICAgIHN1cGVyKGJwbyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkUmVjRmlsZShyZjpSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdENvbXAuYWRkUmVjRmlsZShyZik7XHJcbiAgfVxyXG5cclxuICBzZXRSZWNGaWxlQXVkaW9EYXRhKHJlY0ZpbGU6UmVjb3JkaW5nRmlsZSxhZGg6QXVkaW9EYXRhSG9sZGVyfG51bGwpIHtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdENvbXAuc2V0UmVjRmlsZUF1ZGlvRGF0YShyZWNGaWxlLCBhZGgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdFJlY29yZGluZ0ZpbGUocmY6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVjb3JkaW5nRmlsZUNoYW5nZWQuZW1pdChyZik7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUb3AoKSB7XHJcbiAgICB0aGlzLnJlY29yZGluZ0xpc3RDb21wLnNlbGVjdFRvcCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,195 @@
1
+ import { RecordingFileUtils } from "../recording";
2
+ export class BasicRecFilesCache {
3
+ constructor() {
4
+ //public static readonly DEFAULT_MAX_SAMPLES=30*48000; // TEST 30 seconds
5
+ this._sampleCount = 0;
6
+ this.maxSampleCount = BasicRecFilesCache.DEFAULT_MAX_SAMPLES;
7
+ this._currentRecordingFile = null;
8
+ }
9
+ static { this.DEBUG = false; }
10
+ static { this.DEFAULT_MAX_SAMPLES = 10 * 60 * 48000; } // 10 Minutes mono 48kHz
11
+ get currentRecordingFile() {
12
+ return this._currentRecordingFile;
13
+ }
14
+ set currentRecordingFile(value) {
15
+ this._currentRecordingFile = value;
16
+ this.expire();
17
+ }
18
+ }
19
+ export class SprItemsCache extends BasicRecFilesCache {
20
+ constructor() {
21
+ super(...arguments);
22
+ this._items = new Array();
23
+ }
24
+ get items() {
25
+ return this._items;
26
+ }
27
+ addItem(item) {
28
+ this._items.push(item);
29
+ }
30
+ getItem(index) {
31
+ return this._items[index];
32
+ }
33
+ length() {
34
+ return this._items.length;
35
+ }
36
+ tryExpire(toBeExpiredRf) {
37
+ if (BasicRecFilesCache.DEBUG)
38
+ console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " try expire:");
39
+ if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
40
+ if (BasicRecFilesCache.DEBUG)
41
+ console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " not current file...");
42
+ if (toBeExpiredRf.serverPersisted) {
43
+ if (BasicRecFilesCache.DEBUG)
44
+ console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " is server persisted...");
45
+ // expire recording files first stored to the cache
46
+ let expiredSamples = RecordingFileUtils.expireAudioData(toBeExpiredRf);
47
+ this._sampleCount -= expiredSamples;
48
+ if (expiredSamples > 0) {
49
+ if (BasicRecFilesCache.DEBUG)
50
+ console.debug("Rec. files cache: Expired: " + toBeExpiredRf.toString() + ". Cache samples now: " + this._sampleCount);
51
+ }
52
+ }
53
+ else {
54
+ if (BasicRecFilesCache.DEBUG)
55
+ console.debug("Rec. files cache: #" + toBeExpiredRf.toString() + " not yet persisted on server.");
56
+ }
57
+ }
58
+ else {
59
+ if (BasicRecFilesCache.DEBUG)
60
+ console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " is current file.");
61
+ }
62
+ }
63
+ expire() {
64
+ // expire corrected versions first
65
+ if (BasicRecFilesCache.DEBUG)
66
+ console.debug("Rec. files cache: Expire? current: " + this._sampleCount + ", max: " + this.maxSampleCount);
67
+ if (this._sampleCount > this.maxSampleCount) {
68
+ // expire older versions of an item first
69
+ for (let ii = 0; ii < this._items.length; ii++) {
70
+ if (this._sampleCount <= this.maxSampleCount) {
71
+ break;
72
+ }
73
+ let it = this._items[ii];
74
+ let itRfs = it.recs;
75
+ if (itRfs && itRfs.length > 1) {
76
+ for (let rfi = 0; rfi < itRfs.length - 1; rfi++) {
77
+ if (this._sampleCount <= this.maxSampleCount) {
78
+ break;
79
+ }
80
+ let toBeExpiredRf = itRfs[rfi];
81
+ this.tryExpire(toBeExpiredRf);
82
+ }
83
+ }
84
+ }
85
+ // if that's not sufficient expire audio data of latest versions as well
86
+ for (let ii = 0; ii < this._items.length; ii++) {
87
+ if (this._sampleCount <= this.maxSampleCount) {
88
+ break;
89
+ }
90
+ let it = this._items[ii];
91
+ let itRfs = it.recs;
92
+ if (itRfs && itRfs.length > 0) {
93
+ for (let rfi = 0; rfi < itRfs.length; rfi++) {
94
+ if (this._sampleCount <= this.maxSampleCount) {
95
+ break;
96
+ }
97
+ let toBeExpiredRf = itRfs[rfi];
98
+ this.tryExpire(toBeExpiredRf);
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ addSprRecFile(item, sprRecFile) {
105
+ this.expire();
106
+ if (!item.recs) {
107
+ item.recs = new Array();
108
+ }
109
+ item.recs[sprRecFile.version] = sprRecFile;
110
+ this._sampleCount += RecordingFileUtils.sampleCount(sprRecFile);
111
+ if (BasicRecFilesCache.DEBUG)
112
+ console.debug("Rec. files cache: Added. Cache samples: " + this._sampleCount);
113
+ }
114
+ setSprRecFileAudioData(sprRecFile, adh) {
115
+ this.expire();
116
+ if (BasicRecFilesCache.DEBUG)
117
+ console.debug("Rec. files cache: Set audio data after expire. Cache samples: " + this._sampleCount);
118
+ let currSampleCnt = RecordingFileUtils.sampleCount(sprRecFile);
119
+ this._sampleCount -= currSampleCnt;
120
+ if (BasicRecFilesCache.DEBUG)
121
+ console.debug("Rec. files cache: Set audio data subtracted curr sample count: " + currSampleCnt + ". Cache samples: " + this._sampleCount);
122
+ RecordingFileUtils.setAudioData(sprRecFile, adh);
123
+ let newSampleCnt = RecordingFileUtils.sampleCount(sprRecFile);
124
+ this._sampleCount += newSampleCnt;
125
+ if (BasicRecFilesCache.DEBUG)
126
+ console.debug("Rec. files cache: Set audio data added new sample count: " + newSampleCnt + ". Cache samples: " + this._sampleCount);
127
+ let fl = adh?.frameLen;
128
+ if (sprRecFile.frames == null && fl) {
129
+ sprRecFile.frames = fl;
130
+ }
131
+ if (BasicRecFilesCache.DEBUG)
132
+ console.debug("Rec. files cache: Set audio data. Cache samples: " + this._sampleCount);
133
+ }
134
+ }
135
+ export class RecFilesCache extends BasicRecFilesCache {
136
+ constructor() {
137
+ super(...arguments);
138
+ this._recFiles = new Array();
139
+ }
140
+ get recFiles() {
141
+ return this._recFiles;
142
+ }
143
+ getRecFile(index) {
144
+ return this._recFiles[index];
145
+ }
146
+ length() {
147
+ return this._recFiles.length;
148
+ }
149
+ expire() {
150
+ if (this._sampleCount > this.maxSampleCount) {
151
+ // audio recorder list is sorted: lower index is newer
152
+ for (let rfI = this._recFiles.length - 1; rfI >= 0; rfI--) {
153
+ if (this._sampleCount <= this.maxSampleCount) {
154
+ break;
155
+ }
156
+ let toBeExpiredRf = this._recFiles[rfI];
157
+ if (toBeExpiredRf.serverPersisted) {
158
+ if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
159
+ // expire recording files first stored to the cache
160
+ let expiredSamples = RecordingFileUtils.expireAudioData(toBeExpiredRf);
161
+ this._sampleCount -= expiredSamples;
162
+ if (expiredSamples > 0) {
163
+ if (BasicRecFilesCache.DEBUG)
164
+ console.debug("Rec. files cache: Expired #" + rfI + ". Cache samples: " + this._sampleCount);
165
+ }
166
+ }
167
+ else {
168
+ if (BasicRecFilesCache.DEBUG)
169
+ console.debug("Rec. files cache: #" + rfI + " is current file. (not expiring)");
170
+ }
171
+ }
172
+ else {
173
+ if (BasicRecFilesCache.DEBUG)
174
+ console.debug("Rec. files cache: #" + rfI + " not yet server persisted.");
175
+ }
176
+ }
177
+ }
178
+ }
179
+ addRecFile(recFile) {
180
+ this.expire();
181
+ this._recFiles.push(recFile);
182
+ this._sampleCount += RecordingFileUtils.sampleCount(recFile);
183
+ if (BasicRecFilesCache.DEBUG)
184
+ console.debug("Rec. files cache: Added. Cache samples: " + this._sampleCount);
185
+ }
186
+ setRecFileAudioData(recFile, adh) {
187
+ this.expire();
188
+ this._sampleCount -= RecordingFileUtils.sampleCount(recFile);
189
+ RecordingFileUtils.setAudioData(recFile, adh);
190
+ this._sampleCount += RecordingFileUtils.sampleCount(recFile);
191
+ if (BasicRecFilesCache.DEBUG)
192
+ console.debug("Rec. files cache: Set audio data. Cache samples: " + this._sampleCount);
193
+ }
194
+ }
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nX2ZpbGVfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdfZmlsZV9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGtCQUFrQixFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUlqRixNQUFNLE9BQWdCLGtCQUFrQjtJQUF4QztRQUtFLDBFQUEwRTtRQUVoRSxpQkFBWSxHQUFRLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFRLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBQ3JELDBCQUFxQixHQUFvQixJQUFJLENBQUM7SUFXeEQsQ0FBQzthQWxCd0IsVUFBSyxHQUFDLEtBQUssQUFBTixDQUFPO2FBQ1osd0JBQW1CLEdBQUMsRUFBRSxHQUFDLEVBQUUsR0FBQyxLQUFLLEFBQVosQ0FBYSxHQUFFLHdCQUF3QjtJQVNqRixJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxvQkFBb0IsQ0FBQyxLQUEyQjtRQUNsRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDOztBQUtILE1BQU0sT0FBTyxhQUFjLFNBQVEsa0JBQWtCO0lBQXJEOztRQUdZLFdBQU0sR0FBYSxJQUFJLEtBQUssRUFBUSxDQUFDO0lBOEdqRCxDQUFDO0lBNUdHLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVM7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtB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V0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELElBQUcsa0JBQWtCLENBQUMsS0FBSztZQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELEdBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVjb3JkaW5nRmlsZSwgUmVjb3JkaW5nRmlsZVV0aWxzLCBTcHJSZWNvcmRpbmdGaWxlfSBmcm9tIFwiLi4vcmVjb3JkaW5nXCI7XHJcbmltcG9ydCB7SXRlbX0gZnJvbSBcIi4vaXRlbVwiO1xyXG5pbXBvcnQge0F1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uLy4uL2F1ZGlvL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzaWNSZWNGaWxlc0NhY2hlIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUJVRz1mYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MTAqNjAqNDgwMDA7ICAvLyAxMCBNaW51dGVzIG1vbm8gNDhrSHpcclxuXHJcbiAgLy9wdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MzAqNDgwMDA7ICAvLyBURVNUIDMwIHNlY29uZHNcclxuXHJcbiAgcHJvdGVjdGVkIF9zYW1wbGVDb3VudDpudW1iZXI9MDtcclxuICBtYXhTYW1wbGVDb3VudDpudW1iZXI9QmFzaWNSZWNGaWxlc0NhY2hlLkRFRkFVTFRfTUFYX1NBTVBMRVM7XHJcbiAgcHJpdmF0ZSBfY3VycmVudFJlY29yZGluZ0ZpbGU6UmVjb3JkaW5nRmlsZXxudWxsPW51bGw7XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4cGlyZSgpOnZvaWQ7XHJcblxyXG4gIGdldCBjdXJyZW50UmVjb3JkaW5nRmlsZSgpOiBSZWNvcmRpbmdGaWxlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlY29yZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBzZXQgY3VycmVudFJlY29yZGluZ0ZpbGUodmFsdWU6IFJlY29yZGluZ0ZpbGUgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UmVjb3JkaW5nRmlsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNwckl0ZW1zQ2FjaGUgZXh0ZW5kcyBCYXNpY1JlY0ZpbGVzQ2FjaGV7XHJcblxyXG5cclxuICAgIHByaXZhdGUgX2l0ZW1zOkFycmF5PEl0ZW0+PW5ldyBBcnJheTxJdGVtPigpO1xyXG5cclxuICAgIGdldCBpdGVtcygpOiBBcnJheTxJdGVtPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEl0ZW0oaXRlbTpJdGVtKXtcclxuICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW0oaW5kZXg6bnVtYmVyKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNbaW5kZXhdO1xyXG4gICAgfVxyXG5cclxuICAgIGxlbmd0aCgpOm51bWJlcntcclxuICAgICAgIHJldHVybiB0aGlzLl9pdGVtcy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgdHJ5RXhwaXJlKHRvQmVFeHBpcmVkUmY6U3ByUmVjb3JkaW5nRmlsZSl7XHJcbiAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkrXCIgdHJ5IGV4cGlyZTpcIik7XHJcbiAgICAgIGlmKCFSZWNvcmRpbmdGaWxlVXRpbHMuZXF1YWxzKHRvQmVFeHBpcmVkUmYsdGhpcy5jdXJyZW50UmVjb3JkaW5nRmlsZSkpIHtcclxuICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpK1wiIG5vdCBjdXJyZW50IGZpbGUuLi5cIik7XHJcbiAgICAgICAgaWYgKHRvQmVFeHBpcmVkUmYuc2VydmVyUGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpK1wiIGlzIHNlcnZlciBwZXJzaXN0ZWQuLi5cIik7XHJcbiAgICAgICAgICAvLyBleHBpcmUgcmVjb3JkaW5nIGZpbGVzIGZpcnN0IHN0b3JlZCB0byB0aGUgY2FjaGVcclxuICAgICAgICAgIGxldCBleHBpcmVkU2FtcGxlcyA9IFJlY29yZGluZ0ZpbGVVdGlscy5leHBpcmVBdWRpb0RhdGEodG9CZUV4cGlyZWRSZik7XHJcbiAgICAgICAgICB0aGlzLl9zYW1wbGVDb3VudCAtPSBleHBpcmVkU2FtcGxlcztcclxuICAgICAgICAgIGlmKGV4cGlyZWRTYW1wbGVzPjApIHtcclxuICAgICAgICAgICAgaWYgKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRykgY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEV4cGlyZWQ6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpICsgXCIuIENhY2hlIHNhbXBsZXMgbm93OiBcIiArIHRoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiAjXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkgKyBcIiBub3QgeWV0IHBlcnNpc3RlZCBvbiBzZXJ2ZXIuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBpcyBjdXJyZW50IGZpbGUuXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHByb3RlY3RlZCBleHBpcmUoKSB7XHJcbiAgICAvLyBleHBpcmUgY29ycmVjdGVkIHZlcnNpb25zIGZpcnN0XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEV4cGlyZT8gY3VycmVudDogXCIrdGhpcy5fc2FtcGxlQ291bnQrXCIsIG1heDogXCIrdGhpcy5tYXhTYW1wbGVDb3VudCk7XHJcbiAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPiB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcblxyXG4gICAgICAvLyBleHBpcmUgb2xkZXIgdmVyc2lvbnMgb2YgYW4gaXRlbSBmaXJzdFxyXG4gICAgICBmb3IgKGxldCBpaSA9IDA7IGlpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaXQgPSB0aGlzLl9pdGVtc1tpaV07XHJcbiAgICAgICAgbGV0IGl0UmZzID0gaXQucmVjcztcclxuXHJcbiAgICAgICAgaWYgKGl0UmZzICYmIGl0UmZzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIGZvciAobGV0IHJmaSA9IDA7IHJmaSA8IGl0UmZzLmxlbmd0aCAtIDE7IHJmaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9zYW1wbGVDb3VudCA8PSB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHRvQmVFeHBpcmVkUmYgPSBpdFJmc1tyZmldO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUV4cGlyZSh0b0JlRXhwaXJlZFJmKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGlmIHRoYXQncyBub3Qgc3VmZmljaWVudCBleHBpcmUgYXVkaW8gZGF0YSBvZiBsYXRlc3QgdmVyc2lvbnMgYXMgd2VsbFxyXG4gICAgICBmb3IgKGxldCBpaSA9IDA7IGlpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaXQgPSB0aGlzLl9pdGVtc1tpaV07XHJcbiAgICAgICAgbGV0IGl0UmZzID0gaXQucmVjcztcclxuXHJcbiAgICAgICAgaWYgKGl0UmZzICYmIGl0UmZzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGZvciAobGV0IHJmaSA9IDA7IHJmaSA8IGl0UmZzLmxlbmd0aDsgcmZpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IGl0UmZzW3JmaV07XHJcbiAgICAgICAgICAgIHRoaXMudHJ5RXhwaXJlKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU3ByUmVjRmlsZShpdGVtOkl0ZW0sc3ByUmVjRmlsZTpTcHJSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICBpZighaXRlbS5yZWNzKSB7XHJcbiAgICAgIGl0ZW0ucmVjcz1uZXcgQXJyYXk8U3ByUmVjb3JkaW5nRmlsZT4oKTtcclxuICAgIH1cclxuICAgIGl0ZW0ucmVjc1tzcHJSZWNGaWxlLnZlcnNpb25dPXNwclJlY0ZpbGU7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCArPSBSZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQoc3ByUmVjRmlsZSk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEFkZGVkLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG5cclxuICBzZXRTcHJSZWNGaWxlQXVkaW9EYXRhKHNwclJlY0ZpbGU6U3ByUmVjb3JkaW5nRmlsZSwgYWRoOkF1ZGlvRGF0YUhvbGRlcnxudWxsKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhIGFmdGVyIGV4cGlyZS4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gICAgbGV0IGN1cnJTYW1wbGVDbnQ9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHNwclJlY0ZpbGUpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQtPWN1cnJTYW1wbGVDbnQ7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhIHN1YnRyYWN0ZWQgY3VyciBzYW1wbGUgY291bnQ6IFwiK2N1cnJTYW1wbGVDbnQrXCIuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIFJlY29yZGluZ0ZpbGVVdGlscy5zZXRBdWRpb0RhdGEoc3ByUmVjRmlsZSxhZGgpO1xyXG4gICAgbGV0IG5ld1NhbXBsZUNudD1SZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQoc3ByUmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCs9bmV3U2FtcGxlQ250O1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YSBhZGRlZCBuZXcgc2FtcGxlIGNvdW50OiBcIituZXdTYW1wbGVDbnQrXCIuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIGxldCBmbD1hZGg/LmZyYW1lTGVuO1xyXG4gICAgaWYoc3ByUmVjRmlsZS5mcmFtZXM9PW51bGwgJiYgZmwpe1xyXG4gICAgICBzcHJSZWNGaWxlLmZyYW1lcz1mbDtcclxuICAgIH1cclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogU2V0IGF1ZGlvIGRhdGEuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUmVjRmlsZXNDYWNoZSBleHRlbmRzIEJhc2ljUmVjRmlsZXNDYWNoZXtcclxuXHJcbiAgcHJpdmF0ZSBfcmVjRmlsZXM6QXJyYXk8UmVjb3JkaW5nRmlsZT49bmV3IEFycmF5PFJlY29yZGluZ0ZpbGU+KCk7XHJcblxyXG4gIGdldCByZWNGaWxlcygpOiBBcnJheTxSZWNvcmRpbmdGaWxlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjRmlsZXM7XHJcbiAgfVxyXG5cclxuICBnZXRSZWNGaWxlKGluZGV4Om51bWJlcil7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjRmlsZXNbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgbGVuZ3RoKCk6bnVtYmVye1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBleHBpcmUoKSB7XHJcbiAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPiB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcbiAgICAgIC8vIGF1ZGlvIHJlY29yZGVyIGxpc3QgaXMgc29ydGVkOiBsb3dlciBpbmRleCBpcyBuZXdlclxyXG4gICAgICBmb3IgKGxldCByZkkgPSB0aGlzLl9yZWNGaWxlcy5sZW5ndGgtMTsgcmZJID49MDsgcmZJLS0pIHtcclxuICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0b0JlRXhwaXJlZFJmID0gdGhpcy5fcmVjRmlsZXNbcmZJXTtcclxuICAgICAgICBpZiAodG9CZUV4cGlyZWRSZi5zZXJ2ZXJQZXJzaXN0ZWQpIHtcclxuICAgICAgICAgIGlmKCFSZWNvcmRpbmdGaWxlVXRpbHMuZXF1YWxzKHRvQmVFeHBpcmVkUmYsdGhpcy5jdXJyZW50UmVjb3JkaW5nRmlsZSkpIHtcclxuICAgICAgICAgICAgLy8gZXhwaXJlIHJlY29yZGluZyBmaWxlcyBmaXJzdCBzdG9yZWQgdG8gdGhlIGNhY2hlXHJcbiAgICAgICAgICAgIGxldCBleHBpcmVkU2FtcGxlcyA9IFJlY29yZGluZ0ZpbGVVdGlscy5leHBpcmVBdWRpb0RhdGEodG9CZUV4cGlyZWRSZik7XHJcbiAgICAgICAgICAgIHRoaXMuX3NhbXBsZUNvdW50IC09IGV4cGlyZWRTYW1wbGVzO1xyXG4gICAgICAgICAgICBpZihleHBpcmVkU2FtcGxlcz4wKSB7XHJcbiAgICAgICAgICAgICAgaWYgKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRykgY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEV4cGlyZWQgI1wiICsgcmZJICsgXCIuIENhY2hlIHNhbXBsZXM6IFwiICsgdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiAjXCIrcmZJK1wiIGlzIGN1cnJlbnQgZmlsZS4gKG5vdCBleHBpcmluZylcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6ICNcIityZkkrXCIgbm90IHlldCBzZXJ2ZXIgcGVyc2lzdGVkLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFJlY0ZpbGUocmVjRmlsZTpSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICB0aGlzLl9yZWNGaWxlcy5wdXNoKHJlY0ZpbGUpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQgKz0gUmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHJlY0ZpbGUpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBBZGRlZC4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVjRmlsZUF1ZGlvRGF0YShyZWNGaWxlOlJlY29yZGluZ0ZpbGUsIGFkaDpBdWRpb0RhdGFIb2xkZXJ8bnVsbCl7XHJcbiAgICB0aGlzLmV4cGlyZSgpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQtPVJlY29yZGluZ0ZpbGVVdGlscy5zYW1wbGVDb3VudChyZWNGaWxlKTtcclxuICAgIFJlY29yZGluZ0ZpbGVVdGlscy5zZXRBdWRpb0RhdGEocmVjRmlsZSxhZGgpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQrPVJlY29yZGluZ0ZpbGVVdGlscy5zYW1wbGVDb3VudChyZWNGaWxlKTtcclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogU2V0IGF1ZGlvIGRhdGEuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==