speechrecorderng 3.10.13 → 3.11.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 (99) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/speechrecorderng.mjs +204 -201
  3. package/fesm2022/speechrecorderng.mjs.map +1 -1
  4. package/lib/audio/ui/audio_canvas_layer_comp.d.ts +2 -2
  5. package/lib/spr.module.version.d.ts +1 -1
  6. package/lib/ui/canvas_layer_comp.d.ts +1 -1
  7. package/lib/ui/responsive_component.d.ts +1 -1
  8. package/package.json +13 -15
  9. package/esm2022/lib/action/action.mjs +0 -73
  10. package/esm2022/lib/audio/array_audio_buffer.mjs +0 -164
  11. package/esm2022/lib/audio/array_audio_buffer_input_stream.mjs +0 -86
  12. package/esm2022/lib/audio/array_audio_buffer_random_access_stream.mjs +0 -16
  13. package/esm2022/lib/audio/audio_data_holder.mjs +0 -264
  14. package/esm2022/lib/audio/audio_display.mjs +0 -118
  15. package/esm2022/lib/audio/audio_player.mjs +0 -238
  16. package/esm2022/lib/audio/capture/capture.mjs +0 -855
  17. package/esm2022/lib/audio/context.mjs +0 -79
  18. package/esm2022/lib/audio/dsp/level_measure.mjs +0 -517
  19. package/esm2022/lib/audio/format.mjs +0 -20
  20. package/esm2022/lib/audio/impl/wavformat.mjs +0 -7
  21. package/esm2022/lib/audio/impl/wavreader.mjs +0 -144
  22. package/esm2022/lib/audio/impl/wavwriter.mjs +0 -191
  23. package/esm2022/lib/audio/inddb_audio_buffer.mjs +0 -508
  24. package/esm2022/lib/audio/io/stream.mjs +0 -59
  25. package/esm2022/lib/audio/net_audio_buffer.mjs +0 -293
  26. package/esm2022/lib/audio/persistor.mjs +0 -81
  27. package/esm2022/lib/audio/playback/array_audio_buffer_source_node.mjs +0 -126
  28. package/esm2022/lib/audio/playback/audio_source_node.mjs +0 -18
  29. package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +0 -167
  30. package/esm2022/lib/audio/playback/inddb_audio_buffer_source_node.mjs +0 -167
  31. package/esm2022/lib/audio/playback/net_audio_buffer_source_node.mjs +0 -218
  32. package/esm2022/lib/audio/playback/player.mjs +0 -402
  33. package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +0 -347
  34. package/esm2022/lib/audio/ui/audio_display_control.mjs +0 -150
  35. package/esm2022/lib/audio/ui/audio_display_scroll_pane.mjs +0 -146
  36. package/esm2022/lib/audio/ui/audiosignal.mjs +0 -533
  37. package/esm2022/lib/audio/ui/common.mjs +0 -19
  38. package/esm2022/lib/audio/ui/container.mjs +0 -414
  39. package/esm2022/lib/audio/ui/livelevel.mjs +0 -361
  40. package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +0 -11
  41. package/esm2022/lib/audio/ui/sonagram.mjs +0 -900
  42. package/esm2022/lib/db/inddb.mjs +0 -120
  43. package/esm2022/lib/dsp/utils.mjs +0 -48
  44. package/esm2022/lib/environment/environment.defaults.mjs +0 -9
  45. package/esm2022/lib/io/BinaryReader.mjs +0 -93
  46. package/esm2022/lib/io/BinaryWriter.mjs +0 -80
  47. package/esm2022/lib/io/stream.mjs +0 -259
  48. package/esm2022/lib/math/2d/geometry.mjs +0 -28
  49. package/esm2022/lib/math/complex.mjs +0 -58
  50. package/esm2022/lib/math/dft.mjs +0 -196
  51. package/esm2022/lib/media/utils.mjs +0 -14
  52. package/esm2022/lib/net/uploader.mjs +0 -367
  53. package/esm2022/lib/recorder_component.mjs +0 -65
  54. package/esm2022/lib/speechrecorder/project/project.mjs +0 -54
  55. package/esm2022/lib/speechrecorder/project/project.service.mjs +0 -64
  56. package/esm2022/lib/speechrecorder/recording.mjs +0 -124
  57. package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +0 -221
  58. package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +0 -1014
  59. package/esm2022/lib/speechrecorder/script/script.mjs +0 -114
  60. package/esm2022/lib/speechrecorder/script/script.service.mjs +0 -47
  61. package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +0 -1179
  62. package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +0 -676
  63. package/esm2022/lib/speechrecorder/session/controlpanel.mjs +0 -416
  64. package/esm2022/lib/speechrecorder/session/item.mjs +0 -30
  65. package/esm2022/lib/speechrecorder/session/progress.mjs +0 -135
  66. package/esm2022/lib/speechrecorder/session/prompting.mjs +0 -639
  67. package/esm2022/lib/speechrecorder/session/recorder_combi_pane.mjs +0 -88
  68. package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +0 -195
  69. package/esm2022/lib/speechrecorder/session/recording_list.mjs +0 -188
  70. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +0 -128
  71. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +0 -114
  72. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +0 -146
  73. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +0 -424
  74. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file.mjs +0 -68
  75. package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +0 -288
  76. package/esm2022/lib/speechrecorder/session/session.mjs +0 -2
  77. package/esm2022/lib/speechrecorder/session/session.service.mjs +0 -69
  78. package/esm2022/lib/speechrecorder/session/session_finished_dialog.mjs +0 -46
  79. package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +0 -1385
  80. package/esm2022/lib/speechrecorder/session/warning_bar.mjs +0 -33
  81. package/esm2022/lib/speechrecorder/spruploader.mjs +0 -22
  82. package/esm2022/lib/speechrecorder/startstopsignal/startstopsignal.mjs +0 -2
  83. package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +0 -57
  84. package/esm2022/lib/speechrecorderng.component.mjs +0 -392
  85. package/esm2022/lib/speechrecorderng.module.mjs +0 -97
  86. package/esm2022/lib/spr.config.mjs +0 -27
  87. package/esm2022/lib/spr.module.version.mjs +0 -2
  88. package/esm2022/lib/ui/canvas_layer_comp.mjs +0 -38
  89. package/esm2022/lib/ui/intersection-observer.directive.mjs +0 -32
  90. package/esm2022/lib/ui/message_dialog.mjs +0 -51
  91. package/esm2022/lib/ui/recordingitem_display.mjs +0 -253
  92. package/esm2022/lib/ui/responsive_component.mjs +0 -24
  93. package/esm2022/lib/utils/scrollIntoViewToBottom.mjs +0 -23
  94. package/esm2022/lib/utils/ua-parser.mjs +0 -190
  95. package/esm2022/lib/utils/utils.mjs +0 -132
  96. package/esm2022/lib/utils/wake_lock.mjs +0 -114
  97. package/esm2022/lib/utils/wake_lock_media.mjs +0 -2
  98. package/esm2022/public-api.mjs +0 -35
  99. package/esm2022/speechrecorderng.mjs +0 -5
@@ -1,114 +0,0 @@
1
- export class PromptDocUtil {
2
- static toPlainTextString(promptDoc) {
3
- let pt = "";
4
- let b = promptDoc.body;
5
- if (b != null) {
6
- let blks = b.blocks;
7
- if (blks) {
8
- for (let bli = 0; bli < blks.length; bli++) {
9
- let blk = blks[bli];
10
- let txts = blk.texts;
11
- for (let ti = 0; ti < txts.length; ti++) {
12
- let txtEl = txts[ti];
13
- let txt = txtEl.text;
14
- if (txtEl.type === 'font') {
15
- if (typeof txt === 'string') {
16
- pt = pt.concat(txt);
17
- }
18
- else {
19
- let subTxtEl = txt;
20
- let subTxt = subTxtEl.text;
21
- if (typeof subTxt === 'string') {
22
- pt = pt.concat(subTxt);
23
- }
24
- }
25
- }
26
- else if (typeof txt === 'string') {
27
- pt = pt.concat(txt);
28
- }
29
- }
30
- }
31
- }
32
- }
33
- return pt;
34
- }
35
- }
36
- export class MediaitemUtil {
37
- static toPlainTextString(mediaitem) {
38
- let txt = mediaitem.text;
39
- let pd = mediaitem.promptDoc;
40
- if (txt == null) {
41
- let pt = null;
42
- if (pd != null) {
43
- pt = PromptDocUtil.toPlainTextString(pd);
44
- }
45
- return pt;
46
- }
47
- else {
48
- return txt;
49
- }
50
- }
51
- static description(mi) {
52
- let description = "";
53
- if (mi.alt != null) {
54
- description = description.concat(mi.alt);
55
- }
56
- else {
57
- let src = mi.src;
58
- let mimeType = mi.mimetype;
59
- if (!mimeType) {
60
- mimeType = 'text/plain';
61
- }
62
- if (mimeType.startsWith("image")) {
63
- description = description.concat("IMAGE: ");
64
- }
65
- else if (mimeType.startsWith("audio")) {
66
- description = description.concat("AUDIO: ");
67
- }
68
- else if (mimeType.startsWith("video")) {
69
- description = description.concat("VIDEO: ");
70
- }
71
- let promptText = MediaitemUtil.toPlainTextString(mi);
72
- if (promptText != null) {
73
- description = description.concat(promptText);
74
- }
75
- else if (src != null) {
76
- let srcPn;
77
- try {
78
- let srcUrl = new URL(src);
79
- srcPn = srcUrl.pathname;
80
- }
81
- catch {
82
- srcPn = src;
83
- }
84
- // Get filename without extension
85
- let srcFnM = srcPn.match(/([^\/]*)$/);
86
- if (srcFnM && srcFnM.length == 2) {
87
- let srcFn = srcFnM[1];
88
- let srcFnNm = srcFn.replace(/[\.][^\.]*/, '');
89
- description = description.concat(srcFnNm);
90
- }
91
- }
92
- }
93
- return description;
94
- }
95
- }
96
- export class PromptitemUtil {
97
- static toPlainTextString(promptItem) {
98
- let mis = promptItem.mediaitems;
99
- let description = "";
100
- if (mis) {
101
- let misSize = mis.length;
102
- for (let i = 0; i < misSize; i++) {
103
- let mi = mis[i];
104
- description = description.concat(MediaitemUtil.description(mi));
105
- if (i + 1 < misSize) {
106
- // not last item
107
- description = description.concat(", ");
108
- }
109
- }
110
- }
111
- return description;
112
- }
113
- }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3NjcmlwdC9zY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0ZBLE1BQU0sT0FBTyxhQUFhO0lBRXhCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFtQjtRQUMxQyxJQUFJLEVBQUUsR0FBQyxFQUFFLENBQUM7UUFDVixJQUFJLENBQUMsR0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUcsQ0FBQyxJQUFFLElBQUksRUFBRSxDQUFDO1lBQ1gsSUFBSSxJQUFJLEdBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtZQUNqQixJQUFHLElBQUksRUFBRSxDQUFDO2dCQUNSLEtBQUksSUFBSSxHQUFHLEdBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxFQUFDLENBQUM7b0JBQ25DLElBQUksR0FBRyxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEIsSUFBSSxJQUFJLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDbkIsS0FBSSxJQUFJLEVBQUUsR0FBQyxDQUFDLEVBQUMsRUFBRSxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsRUFBRSxFQUFFLEVBQUMsQ0FBQzt3QkFDOUIsSUFBSSxLQUFLLEdBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNuQixJQUFJLEdBQUcsR0FBRSxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUN0QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFDLENBQUM7NEJBQ3pCLElBQUcsT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFDLENBQUM7Z0NBQzFCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFTLEdBQUcsQ0FBQyxDQUFDOzRCQUM5QixDQUFD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Q0FBQztnQkFDekMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCB0eXBlIE1vZGUgPSBcIk1BTlVBTFwiIHwgXCJBVVRPUFJPR1JFU1NcIiB8IFwiQVVUT1JFQ09SRElOR1wiO1xyXG5leHBvcnQgdHlwZSBQcm9tcHRQaGFzZSA9IFwiSURMRVwiIHwgXCJQUkVSRUNPUkRJTkdcIiB8IFwiUFJFUkVDT1JESU5HT05MWVwiIHwgXCJSRUNPUkRJTkdcIjtcclxuXHJcbmV4cG9ydCB0eXBlIE9yZGVyID0gJ1NFUVVFTlRJQUwnIHwgJ1JBTkRPTScgfCAnUkFORE9NSVpFRCc7XHJcblxyXG5leHBvcnQgdHlwZSBEZWNvcmF0aW9uID0ndW5kZXJsaW5lJ1xyXG5leHBvcnQgdHlwZSBTdHlsZSA9J2l0YWxpYycgfCAnbm9ybWFsJ1xyXG5leHBvcnQgdHlwZSBGb250V2VpZ2h0PSdub3JtYWwnIHwgJ2JvbGQnXHJcbmV4cG9ydCB0eXBlIEJsb2NrVHlwZT0ncCc7XHJcbmV4cG9ydCB0eXBlIFRleHRUeXBlPSd0ZXh0JyB8ICdmb250JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVjaW5zdHJ1Y3Rpb25ze1xyXG4gIHJlY2luc3RydWN0aW9uczpzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGV4dCB7XHJcbiAgdHlwZTogVGV4dFR5cGUsXHJcbiAgY29sb3I/IDogc3RyaW5nLFxyXG4gIGRlY29yYXRpb24/IDogRGVjb3JhdGlvbixcclxuICBzaXplPzogc3RyaW5nLFxyXG4gIHdlaWdodD86IEZvbnRXZWlnaHQsXHJcbiAgc3R5bGU/OiBTdHlsZSxcclxuICB0ZXh0IDogc3RyaW5nIHwgVGV4dDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCbG9jayB7XHJcbiAgdHlwZTogQmxvY2tUeXBlLFxyXG4gIHRleHRzOiBBcnJheTxUZXh0PlxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQm9keXtcclxuICBibG9ja3M/OiBBcnJheTxCbG9jaz4sXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0RG9je1xyXG4gIGJvZHk/OiBCb2R5XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFpdGVtIHtcclxuICB0ZXh0Pzogc3RyaW5nLFxyXG4gIHNyYz86IHN0cmluZyxcclxuICBwcm9tcHREb2M/OiBQcm9tcHREb2MsXHJcbiAgbWltZXR5cGU/OnN0cmluZyxcclxuICBkZWZhdWx0VmlydHVhbFZpZXdCb3g/OlZpcnR1YWxWaWV3Qm94LFxyXG4gIGFsdD86c3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0SXRlbSB7XHJcbiAgdHlwZT86c3RyaW5nO1xyXG4gIGl0ZW1jb2RlPzogc3RyaW5nLFxyXG4gIHByZXJlY2RlbGF5PzogbnVtYmVyLFxyXG4gIHByZXJlY29yZGluZz86IG51bWJlcixcclxuICByZWNkdXJhdGlvbj86IG51bWJlcixcclxuICBkdXJhdGlvbj86bnVtYmVyLFxyXG4gIHBvc3RyZWNvcmRpbmc/OiBudW1iZXIsXHJcbiAgcG9zdHJlY2RlbGF5PzogbnVtYmVyLFxyXG4gIHJlY2luc3RydWN0aW9ucz86IFJlY2luc3RydWN0aW9ucyxcclxuICBtZWRpYWl0ZW1zOiBBcnJheTxNZWRpYWl0ZW0+XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXAge1xyXG4gIG9yZGVyPzpPcmRlcjtcclxuICBwcm9tcHRJdGVtczogQXJyYXk8UHJvbXB0SXRlbT47XHJcbiAgX3NodWZmbGVkUHJvbXB0SXRlbXM6IEFycmF5PFByb21wdEl0ZW0+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlY3Rpb24ge1xyXG4gIG1vZGU6IE1vZGU7XHJcbiAgcHJvbXB0cGhhc2U6IFByb21wdFBoYXNlO1xyXG4gIG9yZGVyPzogT3JkZXI7XHJcbiAgdHJhaW5pbmc6IGJvb2xlYW47XHJcbiAgZ3JvdXBzOiBBcnJheTxHcm91cD47XHJcbiAgX3NodWZmbGVkR3JvdXBzOiBBcnJheTxHcm91cD47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbFZpZXdCb3h7XHJcbiAgaGVpZ2h0Om51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHQge1xyXG4gIHZpcnR1YWxWaWV3Qm94PzpWaXJ0dWFsVmlld0JveDtcclxuICBzZWN0aW9uczogQXJyYXk8U2VjdGlvbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQcm9tcHREb2NVdGlse1xyXG5cclxuICBzdGF0aWMgdG9QbGFpblRleHRTdHJpbmcocHJvbXB0RG9jOlByb21wdERvYyk6c3RyaW5ne1xyXG4gICAgbGV0IHB0PVwiXCI7XHJcbiAgICBsZXQgYj1wcm9tcHREb2MuYm9keTtcclxuICAgIGlmKGIhPW51bGwpIHtcclxuICAgICAgbGV0IGJsa3M9Yi5ibG9ja3NcclxuICAgICAgaWYoYmxrcykge1xyXG4gICAgICAgIGZvcihsZXQgYmxpPTA7YmxpPGJsa3MubGVuZ3RoO2JsaSsrKXtcclxuICAgICAgICAgIGxldCBibGs9Ymxrc1tibGldO1xyXG4gICAgICAgICAgbGV0IHR4dHM9YmxrLnRleHRzO1xyXG4gICAgICAgICAgZm9yKGxldCB0aT0wO3RpPHR4dHMubGVuZ3RoO3RpKyspe1xyXG4gICAgICAgICAgICAgIGxldCB0eHRFbD10eHRzW3RpXTtcclxuICAgICAgICAgICAgICBsZXQgdHh0ID10eHRFbC50ZXh0O1xyXG4gICAgICAgICAgICBpZiggdHh0RWwudHlwZSA9PT0gJ2ZvbnQnKXtcclxuICAgICAgICAgICAgICBpZih0eXBlb2YgdHh0ID09PSAnc3RyaW5nJyl7XHJcbiAgICAgICAgICAgICAgICBwdCA9IHB0LmNvbmNhdCg8c3RyaW5nPnR4dCk7XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3ViVHh0RWw9PFRleHQ+dHh0O1xyXG4gICAgICAgICAgICAgICAgbGV0IHN1YlR4dD1zdWJUeHRFbC50ZXh0O1xyXG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHN1YlR4dCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgcHQ9cHQuY29uY2F0KHN1YlR4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZSBpZih0eXBlb2YgdHh0ID09PSAnc3RyaW5nJyl7XHJcbiAgICAgICAgICAgICAgcHQgPSBwdC5jb25jYXQoPHN0cmluZz50eHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWVkaWFpdGVtVXRpbCB7XHJcbiAgc3RhdGljIHRvUGxhaW5UZXh0U3RyaW5nKG1lZGlhaXRlbTogTWVkaWFpdGVtKTogc3RyaW5nfG51bGwge1xyXG5cclxuICAgIGxldCB0eHQgPSBtZWRpYWl0ZW0udGV4dDtcclxuICAgIGxldCBwZCA9IG1lZGlhaXRlbS5wcm9tcHREb2M7XHJcbiAgICBpZiAodHh0ID09IG51bGwpIHtcclxuICAgICAgbGV0IHB0ID0gbnVsbDtcclxuICAgICAgaWYgKHBkICE9IG51bGwpIHtcclxuICAgICAgICBwdCA9IFByb21wdERvY1V0aWwudG9QbGFpblRleHRTdHJpbmcocGQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0eHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGVzY3JpcHRpb24obWk6IE1lZGlhaXRlbSk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG5cclxuICAgIGlmIChtaS5hbHQgIT0gbnVsbCkge1xyXG4gICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChtaS5hbHQpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgc3JjID0gbWkuc3JjO1xyXG4gICAgICBsZXQgbWltZVR5cGUgPSBtaS5taW1ldHlwZTtcclxuICAgICAgaWYgKCFtaW1lVHlwZSkge1xyXG4gICAgICAgIG1pbWVUeXBlID0gJ3RleHQvcGxhaW4nO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKFwiaW1hZ2VcIikpIHtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChcIklNQUdFOiBcIik7XHJcbiAgICAgIH0gZWxzZSBpZiAobWltZVR5cGUuc3RhcnRzV2l0aChcImF1ZGlvXCIpKSB7XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQoXCJBVURJTzogXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoXCJ2aWRlb1wiKSkge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KFwiVklERU86IFwiKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcHJvbXB0VGV4dCA9IE1lZGlhaXRlbVV0aWwudG9QbGFpblRleHRTdHJpbmcobWkpO1xyXG4gICAgICBpZiAocHJvbXB0VGV4dCAhPSBudWxsKSB7XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQocHJvbXB0VGV4dCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoc3JjICE9IG51bGwpIHtcclxuICAgICAgICBsZXQgc3JjUG47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxldCBzcmNVcmwgPSBuZXcgVVJMKHNyYyk7XHJcbiAgICAgICAgICBzcmNQbj1zcmNVcmwucGF0aG5hbWU7XHJcbiAgICAgICAgfWNhdGNoe1xyXG4gICAgICAgICAgc3JjUG49c3JjO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gR2V0IGZpbGVuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXHJcbiAgICAgICAgbGV0IHNyY0ZuTT1zcmNQbi5tYXRjaCgvKFteXFwvXSopJC8pO1xyXG4gICAgICAgIGlmKHNyY0ZuTSAmJiBzcmNGbk0ubGVuZ3RoPT0yKXtcclxuICAgICAgICAgIGxldCBzcmNGbj1zcmNGbk1bMV07XHJcbiAgICAgICAgICBsZXQgc3JjRm5ObT1zcmNGbi5yZXBsYWNlKC9bXFwuXVteXFwuXSovLCcnKTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KHNyY0ZuTm0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFByb21wdGl0ZW1VdGlsIHtcclxuICBzdGF0aWMgdG9QbGFpblRleHRTdHJpbmcocHJvbXB0SXRlbTogUHJvbXB0SXRlbSk6IHN0cmluZyB7XHJcblxyXG4gICAgbGV0IG1pcyA9IHByb21wdEl0ZW0ubWVkaWFpdGVtcztcclxuICAgIGxldCBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICBpZiAobWlzKSB7XHJcblxyXG4gICAgICBsZXQgbWlzU2l6ZSA9IG1pcy5sZW5ndGg7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWlzU2l6ZTsgaSsrKSB7XHJcbiAgICAgICAgbGV0IG1pID0gbWlzW2ldO1xyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KE1lZGlhaXRlbVV0aWwuZGVzY3JpcHRpb24obWkpKTtcclxuICAgICAgICBpZiAoaSArIDEgPCBtaXNTaXplKSB7XHJcbiAgICAgICAgICAvLyBub3QgbGFzdCBpdGVtXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChcIiwgXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -1,47 +0,0 @@
1
- /**
2
- * Created by klausj on 17.06.2017.
3
- */
4
- import { Inject, Injectable } from '@angular/core';
5
- import { ApiType, SPEECHRECORDER_CONFIG } from "../../spr.config";
6
- import { UUID } from "../../utils/utils";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common/http";
9
- import * as i2 from "../../spr.config";
10
- export const SCRIPT_API_CTX = 'script';
11
- export class ScriptService {
12
- constructor(http, config) {
13
- this.http = http;
14
- this.config = config;
15
- this.withCredentials = false;
16
- let apiEndPoint = '';
17
- if (config && config.apiEndPoint) {
18
- apiEndPoint = config.apiEndPoint;
19
- }
20
- if (apiEndPoint !== '') {
21
- apiEndPoint = apiEndPoint + '/';
22
- }
23
- if (config != null && config.withCredentials != null) {
24
- this.withCredentials = config.withCredentials;
25
- }
26
- this.scriptCtxUrl = apiEndPoint + SCRIPT_API_CTX;
27
- }
28
- scriptObservable(id) {
29
- let encScriptId = encodeURIComponent(id);
30
- let scriptUrl = this.scriptCtxUrl + '/' + encScriptId;
31
- if (this.config && this.config.apiType === ApiType.FILES) {
32
- // for development and demo
33
- // append UUID to make request URL unique to avoid localhost server caching
34
- scriptUrl = scriptUrl + '.json?requestUUID=' + UUID.generate();
35
- }
36
- return this.http.get(scriptUrl, { withCredentials: this.withCredentials });
37
- }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScriptService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
39
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScriptService }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScriptService, decorators: [{
42
- type: Injectable
43
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SpeechRecorderConfig, decorators: [{
44
- type: Inject,
45
- args: [SPEECHRECORDER_CONFIG]
46
- }] }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2NyaXB0L3NjcmlwdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFJdkMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFDLFFBQVEsQ0FBQTtBQUdwQyxNQUFNLE9BQU8sYUFBYTtJQUl4QixZQUFvQixJQUFlLEVBQXdDLE1BQTRCO1FBQW5GLFNBQUksR0FBSixJQUFJLENBQVc7UUFBd0MsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFGdEYsb0JBQWUsR0FBUyxLQUFLLENBQUM7UUFJN0MsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBRXBCLElBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxXQUFXLEdBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBRyxXQUFXLEtBQUssRUFBRSxFQUFDLENBQUM7WUFDckIsV0FBVyxHQUFDLFdBQVcsR0FBQyxHQUFHLENBQUE7UUFDN0IsQ0FBQztRQUNELElBQUcsTUFBTSxJQUFFLElBQUksSUFBSSxNQUFNLENBQUMsZUFBZSxJQUFFLElBQUksRUFBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLEdBQUcsY0FBYyxDQUFDO0lBQ25ELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFrQjtRQUNqQyxJQUFJLFdBQVcsR0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6RCwyQkFBMkI7WUFDM0IsMkVBQTJFO1lBQzNFLFNBQVMsR0FBRyxTQUFTLEdBQUcsb0JBQW9CLEdBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLFNBQVMsRUFBQyxFQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQTtJQUVsRixDQUFDOytHQTlCUyxhQUFhLDRDQUlvQixxQkFBcUI7bUhBSnRELGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQUs0QixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDcmVhdGVkIGJ5IGtsYXVzaiBvbiAxNy4wNi4yMDE3LlxyXG4gKi9cclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QXBpVHlwZSwgU1BFRUNIUkVDT1JERVJfQ09ORklHLCBTcGVlY2hSZWNvcmRlckNvbmZpZ30gZnJvbSBcIi4uLy4uL3Nwci5jb25maWdcIjtcclxuaW1wb3J0IHtTY3JpcHR9IGZyb20gXCIuL3NjcmlwdFwiO1xyXG5pbXBvcnQge1VVSUR9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IFNDUklQVF9BUElfQ1RYPSdzY3JpcHQnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTY3JpcHRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjcmlwdEN0eFVybDpzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB3aXRoQ3JlZGVudGlhbHM6Ym9vbGVhbj1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQsQEluamVjdChTUEVFQ0hSRUNPUkRFUl9DT05GSUcpIHByaXZhdGUgY29uZmlnPzpTcGVlY2hSZWNvcmRlckNvbmZpZykge1xyXG5cclxuICAgIGxldCBhcGlFbmRQb2ludCA9ICcnXHJcblxyXG4gICAgaWYoY29uZmlnICYmIGNvbmZpZy5hcGlFbmRQb2ludCkge1xyXG4gICAgICBhcGlFbmRQb2ludD1jb25maWcuYXBpRW5kUG9pbnQ7XHJcbiAgICB9XHJcbiAgICBpZihhcGlFbmRQb2ludCAhPT0gJycpe1xyXG4gICAgICBhcGlFbmRQb2ludD1hcGlFbmRQb2ludCsnLydcclxuICAgIH1cclxuICAgIGlmKGNvbmZpZyE9bnVsbCAmJiBjb25maWcud2l0aENyZWRlbnRpYWxzIT1udWxsKXtcclxuICAgICAgdGhpcy53aXRoQ3JlZGVudGlhbHM9Y29uZmlnLndpdGhDcmVkZW50aWFscztcclxuICAgIH1cclxuICAgIHRoaXMuc2NyaXB0Q3R4VXJsID0gYXBpRW5kUG9pbnQgKyBTQ1JJUFRfQVBJX0NUWDtcclxuICB9XHJcblxyXG4gIHNjcmlwdE9ic2VydmFibGUoaWQ6c3RyaW5nIHwgbnVtYmVyKTpPYnNlcnZhYmxlPFNjcmlwdD57XHJcbiAgICBsZXQgZW5jU2NyaXB0SWQ9ZW5jb2RlVVJJQ29tcG9uZW50KGlkKTtcclxuICAgIGxldCBzY3JpcHRVcmwgPSB0aGlzLnNjcmlwdEN0eFVybCArICcvJyArIGVuY1NjcmlwdElkO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmFwaVR5cGUgPT09IEFwaVR5cGUuRklMRVMpIHtcclxuICAgICAgLy8gZm9yIGRldmVsb3BtZW50IGFuZCBkZW1vXHJcbiAgICAgIC8vIGFwcGVuZCBVVUlEIHRvIG1ha2UgcmVxdWVzdCBVUkwgdW5pcXVlIHRvIGF2b2lkIGxvY2FsaG9zdCBzZXJ2ZXIgY2FjaGluZ1xyXG4gICAgICBzY3JpcHRVcmwgPSBzY3JpcHRVcmwgKyAnLmpzb24/cmVxdWVzdFVVSUQ9JytVVUlELmdlbmVyYXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIHRoaXMuaHR0cC5nZXQ8U2NyaXB0PihzY3JpcHRVcmwse3dpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHMgfSlcclxuXHJcbiAgIH1cclxuXHJcbn1cclxuXHJcblxyXG5cclxuIl19