speechrecorderng 2.18.10 → 2.19.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/bundles/speechrecorderng.umd.js +687 -247
- package/bundles/speechrecorderng.umd.js.map +1 -1
- package/esm2015/lib/audio/audio_display.js +4 -4
- package/esm2015/lib/audio/audio_player.js +4 -4
- package/esm2015/lib/audio/capture/capture.js +262 -83
- package/esm2015/lib/audio/format.js +1 -1
- package/esm2015/lib/audio/impl/wavformat.js +1 -1
- package/esm2015/lib/audio/ui/audio_canvas_layer_comp.js +7 -7
- package/esm2015/lib/audio/ui/audio_display_control.js +4 -4
- package/esm2015/lib/audio/ui/audio_display_scroll_pane.js +4 -4
- package/esm2015/lib/audio/ui/audiosignal.js +4 -4
- package/esm2015/lib/audio/ui/container.js +4 -4
- package/esm2015/lib/audio/ui/livelevel.js +4 -4
- package/esm2015/lib/audio/ui/scroll_pane_horizontal.js +12 -12
- package/esm2015/lib/audio/ui/sonagram.js +4 -4
- package/esm2015/lib/dsp/utils.js +1 -1
- package/esm2015/lib/io/BinaryWriter.js +1 -1
- package/esm2015/lib/io/stream.js +8 -7
- package/esm2015/lib/math/complex.js +1 -1
- package/esm2015/lib/math/dft.js +1 -1
- package/esm2015/lib/math/utils.js +1 -1
- package/esm2015/lib/speechrecorder/project/project.js +27 -1
- package/esm2015/lib/speechrecorder/project/project.service.js +4 -4
- package/esm2015/lib/speechrecorder/recordings/recordings.service.js +4 -4
- package/esm2015/lib/speechrecorder/script/script.service.js +4 -4
- package/esm2015/lib/speechrecorder/session/controlpanel.js +16 -16
- package/esm2015/lib/speechrecorder/session/progress.js +4 -4
- package/esm2015/lib/speechrecorder/session/prompting.js +16 -16
- package/esm2015/lib/speechrecorder/session/recordingfile/recording-file-meta.component.js +4 -4
- package/esm2015/lib/speechrecorder/session/recordingfile/recording-file-navi.component.js +4 -4
- package/esm2015/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.js +4 -4
- package/esm2015/lib/speechrecorder/session/recordingfile/recording-file-view.component.js +4 -4
- package/esm2015/lib/speechrecorder/session/recordingfile/recordingfile-service.js +4 -4
- package/esm2015/lib/speechrecorder/session/session.service.js +4 -4
- package/esm2015/lib/speechrecorder/session/session_finished_dialog.js +4 -4
- package/esm2015/lib/speechrecorder/session/sessionmanager.js +39 -12
- package/esm2015/lib/speechrecorder/session/warning_bar.js +4 -4
- package/esm2015/lib/speechrecorder/spruploader.js +4 -4
- package/esm2015/lib/speechrecorder/startstopsignal/startstopsignal.js +1 -1
- package/esm2015/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.js +4 -4
- package/esm2015/lib/speechrecorderng.component.js +5 -4
- package/esm2015/lib/speechrecorderng.module.js +5 -5
- package/esm2015/lib/spr.config.js +4 -4
- package/esm2015/lib/spr.module.version.js +2 -2
- package/esm2015/lib/ui/canvas_layer_comp.js +4 -4
- package/esm2015/lib/ui/livelevel_display.js +26 -6
- package/esm2015/lib/ui/message_dialog.js +4 -4
- package/esm2015/lib/utils/css_utils.js +1 -1
- package/esm2015/lib/utils/scrollIntoViewToBottom.js +4 -4
- package/esm2015/lib/utils/ua-parser.js +166 -0
- package/fesm2015/speechrecorderng.js +664 -247
- package/fesm2015/speechrecorderng.js.map +1 -1
- package/lib/audio/capture/capture.d.ts +8 -5
- package/lib/speechrecorder/project/project.d.ts +25 -0
- package/lib/speechrecorder/session/sessionmanager.d.ts +7 -3
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/livelevel_display.d.ts +4 -1
- package/lib/utils/ua-parser.d.ts +40 -0
- package/package.json +13 -13
|
@@ -720,15 +720,309 @@
|
|
|
720
720
|
}());
|
|
721
721
|
AudioPlayer.DEFAULT_BUFSIZE = 8192;
|
|
722
722
|
|
|
723
|
-
var
|
|
724
|
-
function
|
|
725
|
-
this.
|
|
726
|
-
this.
|
|
723
|
+
var UserAgentComponent = /** @class */ (function () {
|
|
724
|
+
function UserAgentComponent(name, version, comment) {
|
|
725
|
+
this.name = name;
|
|
726
|
+
this.version = version;
|
|
727
|
+
this.comment = comment;
|
|
727
728
|
}
|
|
728
|
-
|
|
729
|
+
UserAgentComponent.prototype.toString = function () {
|
|
730
|
+
var s = '[' + this.name + ']';
|
|
731
|
+
if (this.version) {
|
|
732
|
+
s = s + ' [' + this.version + ']';
|
|
733
|
+
}
|
|
734
|
+
if (this.comment) {
|
|
735
|
+
s = s + ' [' + this.comment + ']';
|
|
736
|
+
}
|
|
737
|
+
return s;
|
|
738
|
+
};
|
|
739
|
+
return UserAgentComponent;
|
|
729
740
|
}());
|
|
741
|
+
var NAME_FIREFOX = 'Firefox';
|
|
742
|
+
var NAME_CHROME = 'Chrome';
|
|
743
|
+
var NAME_SAFARI = 'Safari';
|
|
744
|
+
var NAME_EDGE = 'Edge';
|
|
745
|
+
var Browser$1;
|
|
746
|
+
(function (Browser) {
|
|
747
|
+
Browser["Firefox"] = "Firefox";
|
|
748
|
+
Browser["Chrome"] = "Chrome";
|
|
749
|
+
Browser["Safari"] = "Safari";
|
|
750
|
+
Browser["Edge"] = "Edge";
|
|
751
|
+
})(Browser$1 || (Browser$1 = {}));
|
|
752
|
+
var OS_WINDOWS = 'Windows';
|
|
753
|
+
var OS_ANDROID = 'Android';
|
|
754
|
+
var Platform$1;
|
|
755
|
+
(function (Platform) {
|
|
756
|
+
Platform["Windows"] = "Windows";
|
|
757
|
+
Platform["Android"] = "Android";
|
|
758
|
+
Platform["macOS"] = "MAC OS X";
|
|
759
|
+
})(Platform$1 || (Platform$1 = {}));
|
|
760
|
+
var UserAgent = /** @class */ (function () {
|
|
761
|
+
function UserAgent(_detectedPlatform, _detectedBrowser) {
|
|
762
|
+
this._detectedPlatform = _detectedPlatform;
|
|
763
|
+
this._detectedBrowser = _detectedBrowser;
|
|
764
|
+
}
|
|
765
|
+
Object.defineProperty(UserAgent.prototype, "detectedBrowser", {
|
|
766
|
+
get: function () {
|
|
767
|
+
return this._detectedBrowser;
|
|
768
|
+
},
|
|
769
|
+
enumerable: false,
|
|
770
|
+
configurable: true
|
|
771
|
+
});
|
|
772
|
+
Object.defineProperty(UserAgent.prototype, "detectedPlatform", {
|
|
773
|
+
get: function () {
|
|
774
|
+
return this._detectedPlatform;
|
|
775
|
+
},
|
|
776
|
+
enumerable: false,
|
|
777
|
+
configurable: true
|
|
778
|
+
});
|
|
779
|
+
return UserAgent;
|
|
780
|
+
}());
|
|
781
|
+
var UserAgentBuilder = /** @class */ (function () {
|
|
782
|
+
function UserAgentBuilder() {
|
|
783
|
+
this.comps = new Array();
|
|
784
|
+
}
|
|
785
|
+
UserAgentBuilder.prototype.build = function () {
|
|
786
|
+
// // @ts-ignore
|
|
787
|
+
// if(navigator.userAgentData){
|
|
788
|
+
// // maybe we can use this in the future
|
|
789
|
+
// console.info("Browser provides userAgentData:");
|
|
790
|
+
//
|
|
791
|
+
// console.info("Brands:");
|
|
792
|
+
// // @ts-ignore
|
|
793
|
+
// navigator.userAgentData.brands.forEach((br=>{
|
|
794
|
+
// console.info(br.brand +" "+br.version);
|
|
795
|
+
// }))
|
|
796
|
+
// // @ts-ignore
|
|
797
|
+
// console.info("Platform: "+navigator.userAgentData.platform);
|
|
798
|
+
// // @ts-ignore
|
|
799
|
+
// console.info("Mobile:"+navigator.userAgentData.mobile);
|
|
800
|
+
// // @ts-ignore
|
|
801
|
+
// //console.info(navigator.userAgentData.toJSON());
|
|
802
|
+
// }else {
|
|
803
|
+
// console.info("Browser does not provide userAgentData.");
|
|
804
|
+
// }
|
|
805
|
+
var ua = navigator.userAgent;
|
|
806
|
+
this.comps = new Array();
|
|
807
|
+
var pp = 0;
|
|
808
|
+
while (pp < ua.length) {
|
|
809
|
+
//parse name/version
|
|
810
|
+
var name = null;
|
|
811
|
+
var version = null;
|
|
812
|
+
var comment = void 0;
|
|
813
|
+
var blPos = ua.indexOf(' ', pp);
|
|
814
|
+
var prt = void 0;
|
|
815
|
+
if (blPos == -1) {
|
|
816
|
+
prt = ua.substr(pp);
|
|
817
|
+
pp += prt.length;
|
|
818
|
+
}
|
|
819
|
+
else {
|
|
820
|
+
prt = ua.substr(pp, blPos - pp);
|
|
821
|
+
pp = blPos + 1;
|
|
822
|
+
}
|
|
823
|
+
var sepPos = prt.indexOf('/');
|
|
824
|
+
if (sepPos > 0) {
|
|
825
|
+
name = prt.substr(0, sepPos);
|
|
826
|
+
version = prt.substr(sepPos + 1);
|
|
827
|
+
}
|
|
828
|
+
else {
|
|
829
|
+
name = prt;
|
|
830
|
+
}
|
|
831
|
+
while (ua[pp] === ' ' && pp < ua.length) {
|
|
832
|
+
pp++;
|
|
833
|
+
}
|
|
834
|
+
if (ua[pp] === '(') {
|
|
835
|
+
pp++;
|
|
836
|
+
var commEnd = ua.indexOf(')', pp);
|
|
837
|
+
comment = ua.substr(pp, commEnd - pp);
|
|
838
|
+
pp = commEnd + 1;
|
|
839
|
+
}
|
|
840
|
+
while (ua[pp] === ' ' && pp < ua.length) {
|
|
841
|
+
pp++;
|
|
842
|
+
}
|
|
843
|
+
this.comps.push(new UserAgentComponent(name, version, comment));
|
|
844
|
+
}
|
|
845
|
+
var detPlatf = null;
|
|
846
|
+
if (this.runsOnOS(Platform$1.Android)) {
|
|
847
|
+
detPlatf = Platform$1.Android;
|
|
848
|
+
}
|
|
849
|
+
else if (this.runsOnOS(Platform$1.Windows)) {
|
|
850
|
+
detPlatf = Platform$1.Windows;
|
|
851
|
+
}
|
|
852
|
+
else if (this.runsOnOS(Platform$1.macOS)) {
|
|
853
|
+
detPlatf = Platform$1.macOS;
|
|
854
|
+
}
|
|
855
|
+
var detBr = null;
|
|
856
|
+
if (this.matchesBrowser(Browser$1.Firefox)) {
|
|
857
|
+
detBr = Browser$1.Firefox;
|
|
858
|
+
}
|
|
859
|
+
else if (this.matchesBrowser(Browser$1.Chrome)) {
|
|
860
|
+
detBr = Browser$1.Chrome;
|
|
861
|
+
}
|
|
862
|
+
else if (this.matchesBrowser(Browser$1.Safari)) {
|
|
863
|
+
detBr = Browser$1.Safari;
|
|
864
|
+
}
|
|
865
|
+
this.userAgent = new UserAgent(detPlatf, detBr);
|
|
866
|
+
};
|
|
867
|
+
UserAgentBuilder.prototype.matchesBrowser = function (browserName) {
|
|
868
|
+
for (var ci = 0; ci < this.comps.length; ci++) {
|
|
869
|
+
var bn = this.comps[ci].name;
|
|
870
|
+
var bnRe = new RegExp(browserName, 'i');
|
|
871
|
+
if (bn.match(bnRe)) {
|
|
872
|
+
return true;
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
return false;
|
|
876
|
+
};
|
|
877
|
+
UserAgentBuilder.prototype.runsOnOS = function (os) {
|
|
878
|
+
for (var ci = 0; ci < this.comps.length; ci++) {
|
|
879
|
+
var cc = this.comps[ci].comment;
|
|
880
|
+
if (cc) {
|
|
881
|
+
var osRe = new RegExp(os, 'i');
|
|
882
|
+
if (cc.match(osRe)) {
|
|
883
|
+
return true;
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
return false;
|
|
888
|
+
};
|
|
889
|
+
UserAgentBuilder.userAgent = function () {
|
|
890
|
+
if (!this.instance) {
|
|
891
|
+
this.instance = new UserAgentBuilder();
|
|
892
|
+
}
|
|
893
|
+
this.instance.build();
|
|
894
|
+
return this.instance.userAgent;
|
|
895
|
+
};
|
|
896
|
+
return UserAgentBuilder;
|
|
897
|
+
}());
|
|
898
|
+
UserAgentBuilder.instance = undefined;
|
|
899
|
+
|
|
900
|
+
var ConstraintType;
|
|
901
|
+
(function (ConstraintType) {
|
|
902
|
+
ConstraintType["Exact"] = "EXACT";
|
|
903
|
+
ConstraintType["Ideal"] = "IDEAL";
|
|
904
|
+
})(ConstraintType || (ConstraintType = {}));
|
|
905
|
+
;
|
|
906
|
+
var Platform;
|
|
907
|
+
(function (Platform) {
|
|
908
|
+
Platform["Linux"] = "LINUX";
|
|
909
|
+
Platform["macOS"] = "MACOS";
|
|
910
|
+
Platform["Windows"] = "WINDOWS";
|
|
911
|
+
Platform["Android"] = "ANDROID";
|
|
912
|
+
})(Platform || (Platform = {}));
|
|
913
|
+
var BrowserBase;
|
|
914
|
+
(function (BrowserBase) {
|
|
915
|
+
BrowserBase["Chromium"] = "CHROMIUM";
|
|
916
|
+
})(BrowserBase || (BrowserBase = {}));
|
|
917
|
+
;
|
|
918
|
+
var Browser;
|
|
919
|
+
(function (Browser) {
|
|
920
|
+
Browser["Firefox"] = "FIREFOX";
|
|
921
|
+
Browser["Chromium"] = "CHROMIUM";
|
|
922
|
+
Browser["Chrome"] = "CHROME";
|
|
923
|
+
Browser["Edge"] = "EDGE";
|
|
924
|
+
Browser["Opera"] = "OPERA";
|
|
925
|
+
})(Browser || (Browser = {}));
|
|
926
|
+
var ProjectUtil = /** @class */ (function () {
|
|
927
|
+
function ProjectUtil() {
|
|
928
|
+
}
|
|
929
|
+
ProjectUtil.audioChannelCount = function (project) {
|
|
930
|
+
var chs = ProjectUtil.DEFAULT_AUDIO_CHANNEL_COUNT;
|
|
931
|
+
if (project.mediaCaptureFormat) {
|
|
932
|
+
chs = project.mediaCaptureFormat.audioChannelCount;
|
|
933
|
+
}
|
|
934
|
+
else if (project.audioFormat) {
|
|
935
|
+
chs = project.audioFormat.channels;
|
|
936
|
+
}
|
|
937
|
+
return chs;
|
|
938
|
+
};
|
|
939
|
+
return ProjectUtil;
|
|
940
|
+
}());
|
|
941
|
+
ProjectUtil.DEFAULT_AUDIO_CHANNEL_COUNT = 2;
|
|
942
|
+
|
|
943
|
+
var CHROME_ACTIVATE_ECHO_CANCELLATION_WITH_AGC = false;
|
|
944
|
+
var DEBUG_TRACE_LEVEL = 0;
|
|
945
|
+
var ENABLE_AUDIO_WORKLET = true;
|
|
946
|
+
// Super dirty way to load this module
|
|
947
|
+
// Copy content of interceptor_worklet.js to this string
|
|
948
|
+
var awpStr = "class AudioCaptureInterceptorProcessor extends AudioWorkletProcessor{\n" +
|
|
949
|
+
"\n" +
|
|
950
|
+
" BUFFER_QUANTUMS=64;\n" +
|
|
951
|
+
" QUANTUM_FRAME_LEN=128;\n" +
|
|
952
|
+
" BUFFER_FRAME_LEN=this.QUANTUM_FRAME_LEN*this.BUFFER_QUANTUMS;\n" +
|
|
953
|
+
" buffer=null;\n" +
|
|
954
|
+
" bufferPos=0;\n" +
|
|
955
|
+
" bufferPosBytes=0;\n" +
|
|
956
|
+
" constructor() {\n" +
|
|
957
|
+
" super();\n" +
|
|
958
|
+
"\n" +
|
|
959
|
+
" }\n" +
|
|
960
|
+
"\n" +
|
|
961
|
+
" process(\n" +
|
|
962
|
+
" inputs,\n" +
|
|
963
|
+
" outputs,\n" +
|
|
964
|
+
" parameters\n" +
|
|
965
|
+
" ){\n" +
|
|
966
|
+
"\n" +
|
|
967
|
+
" let inputsCnt=inputs.length;\n" +
|
|
968
|
+
" let channelCount=0;\n" +
|
|
969
|
+
" let inputLen=0;\n" +
|
|
970
|
+
" let inputLenBytes=0;\n" +
|
|
971
|
+
" if(inputsCnt>0) {\n" +
|
|
972
|
+
" let input0 = inputs[0];\n" +
|
|
973
|
+
" channelCount = input0.length;\n" +
|
|
974
|
+
" if (channelCount > 0) {\n" +
|
|
975
|
+
" let input0ch0=input0[0];\n" +
|
|
976
|
+
" inputLen=input0ch0.length;\n" +
|
|
977
|
+
" inputLenBytes=input0ch0.buffer.length;\n" +
|
|
978
|
+
" }\n" +
|
|
979
|
+
" }\n" +
|
|
980
|
+
" if (!this.buffer || this.buffer.length < channelCount) {\n" +
|
|
981
|
+
" this.buffer = new Array(channelCount);\n" +
|
|
982
|
+
" this.bufferPos = 0\n" +
|
|
983
|
+
" for (let bch = 0; bch < channelCount; bch++) {\n" +
|
|
984
|
+
" this.buffer[bch] = new Float32Array(this.BUFFER_FRAME_LEN);\n" +
|
|
985
|
+
" this.bufferPos = 0;\n" +
|
|
986
|
+
" this.bufferPosBytes=0;\n" +
|
|
987
|
+
" }\n" +
|
|
988
|
+
" }\n" +
|
|
989
|
+
" let bufAvail = this.BUFFER_FRAME_LEN - this.bufferPos;\n" +
|
|
990
|
+
" // check if buffer has to be transferred\n" +
|
|
991
|
+
" if (inputLen > bufAvail) {\n" +
|
|
992
|
+
" let ada=new Array(channelCount);\n" +
|
|
993
|
+
" for (let ch = 0; ch < channelCount; ch++) {\n" +
|
|
994
|
+
" ada[ch]=this.buffer[ch].buffer.slice(0);\n" +
|
|
995
|
+
" }\n" +
|
|
996
|
+
" this.port.postMessage({\n" +
|
|
997
|
+
" data: ada,\n" +
|
|
998
|
+
" chs: channelCount,\n" +
|
|
999
|
+
" len: this.bufferPos\n" +
|
|
1000
|
+
" }, ada);\n" +
|
|
1001
|
+
" // buffer transferred, reset\n" +
|
|
1002
|
+
" this.bufferPos = 0;\n" +
|
|
1003
|
+
" this.bufferPosBytes=0;\n" +
|
|
1004
|
+
" }\n" +
|
|
1005
|
+
"\n" +
|
|
1006
|
+
" for(let ii=0;ii<inputsCnt;ii++) {\n" +
|
|
1007
|
+
" for (let ch = 0; ch < channelCount; ch++) {\n" +
|
|
1008
|
+
" // Mute outputs\n" +
|
|
1009
|
+
" //outputs[ii][ch].fill(0);\n" +
|
|
1010
|
+
" let chSamples = inputs[ii][ch];\n" +
|
|
1011
|
+
" this.buffer[ch].set(chSamples,this.bufferPos);\n" +
|
|
1012
|
+
" }\n" +
|
|
1013
|
+
" this.bufferPos+=inputLen;\n" +
|
|
1014
|
+
" this.bufferPosBytes+=inputLenBytes;\n" +
|
|
1015
|
+
" }\n" +
|
|
1016
|
+
" \n" +
|
|
1017
|
+
" return true;\n" +
|
|
1018
|
+
" }\n" +
|
|
1019
|
+
"}\n" +
|
|
1020
|
+
"\n" +
|
|
1021
|
+
"registerProcessor('capture-interceptor',AudioCaptureInterceptorProcessor);\n";
|
|
730
1022
|
var AudioCapture = /** @class */ (function () {
|
|
731
1023
|
function AudioCapture(context) {
|
|
1024
|
+
this.agcStatus = null;
|
|
1025
|
+
this.bufferingNode = null;
|
|
732
1026
|
this.audioOutStream = null;
|
|
733
1027
|
this.disconnectStreams = true;
|
|
734
1028
|
this._opened = false;
|
|
@@ -783,7 +1077,7 @@
|
|
|
783
1077
|
if (!labelsAvailable) {
|
|
784
1078
|
//console.debug("Media device enumeration: No labels.")
|
|
785
1079
|
if (retry) {
|
|
786
|
-
|
|
1080
|
+
console.info("Starting dummy session to request audio permissions...");
|
|
787
1081
|
_this.dummySession().then(function (s) {
|
|
788
1082
|
// and stop it immediately
|
|
789
1083
|
if (s) {
|
|
@@ -848,13 +1142,14 @@
|
|
|
848
1142
|
console.log("Audio device: Id: " + di.deviceId + " groupId: " + di.groupId + " label: " + di.label + " kind: " + di.kind);
|
|
849
1143
|
}
|
|
850
1144
|
};
|
|
851
|
-
AudioCapture.prototype.open = function (channelCount, selDeviceId) {
|
|
1145
|
+
AudioCapture.prototype.open = function (channelCount, selDeviceId, autoGainControlConfigs) {
|
|
852
1146
|
var _this = this;
|
|
853
1147
|
this.context.resume().then(function () {
|
|
854
|
-
_this._open(channelCount, selDeviceId);
|
|
1148
|
+
_this._open(channelCount, selDeviceId, autoGainControlConfigs);
|
|
855
1149
|
});
|
|
856
1150
|
};
|
|
857
|
-
AudioCapture.prototype._open = function (channelCount, selDeviceId) {
|
|
1151
|
+
AudioCapture.prototype._open = function (channelCount, selDeviceId, autoGainControlConfigs) {
|
|
1152
|
+
var e_1, _a;
|
|
858
1153
|
var _this = this;
|
|
859
1154
|
this.channelCount = channelCount;
|
|
860
1155
|
this.framesRecorded = 0;
|
|
@@ -871,7 +1166,58 @@
|
|
|
871
1166
|
// TODO test if input is unprocessed
|
|
872
1167
|
var msc;
|
|
873
1168
|
console.info('User agent: ' + navigator.userAgent);
|
|
874
|
-
|
|
1169
|
+
var ua = UserAgentBuilder.userAgent();
|
|
1170
|
+
// ua.components.forEach((c)=>{
|
|
1171
|
+
// console.info("UA_Comp: "+c.toString());
|
|
1172
|
+
// })
|
|
1173
|
+
var agcCfg = null;
|
|
1174
|
+
var autoGainControl = false;
|
|
1175
|
+
var chromeEchoCancellation = false;
|
|
1176
|
+
if (autoGainControlConfigs) {
|
|
1177
|
+
try {
|
|
1178
|
+
for (var autoGainControlConfigs_1 = __values(autoGainControlConfigs), autoGainControlConfigs_1_1 = autoGainControlConfigs_1.next(); !autoGainControlConfigs_1_1.done; autoGainControlConfigs_1_1 = autoGainControlConfigs_1.next()) {
|
|
1179
|
+
var agcc = autoGainControlConfigs_1_1.value;
|
|
1180
|
+
if (agcc.platform === Platform.Android && ua.detectedPlatform === Platform$1.Android) {
|
|
1181
|
+
agcCfg = agcc;
|
|
1182
|
+
break;
|
|
1183
|
+
}
|
|
1184
|
+
if (agcc.platform === Platform.Windows && ua.detectedPlatform === Platform$1.Windows) {
|
|
1185
|
+
agcCfg = agcc;
|
|
1186
|
+
break;
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
1191
|
+
finally {
|
|
1192
|
+
try {
|
|
1193
|
+
if (autoGainControlConfigs_1_1 && !autoGainControlConfigs_1_1.done && (_a = autoGainControlConfigs_1.return)) _a.call(autoGainControlConfigs_1);
|
|
1194
|
+
}
|
|
1195
|
+
finally { if (e_1) throw e_1.error; }
|
|
1196
|
+
}
|
|
1197
|
+
if (agcCfg) {
|
|
1198
|
+
// TODO use EXACT/IDEAL constraint
|
|
1199
|
+
autoGainControl = agcCfg.value;
|
|
1200
|
+
if (CHROME_ACTIVATE_ECHO_CANCELLATION_WITH_AGC) {
|
|
1201
|
+
chromeEchoCancellation = agcCfg.value;
|
|
1202
|
+
}
|
|
1203
|
+
// TODO query real AGC status
|
|
1204
|
+
this.agcStatus = agcCfg.value;
|
|
1205
|
+
}
|
|
1206
|
+
else {
|
|
1207
|
+
this.agcStatus = false;
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
// default
|
|
1211
|
+
msc = {
|
|
1212
|
+
audio: {
|
|
1213
|
+
deviceId: selDeviceId,
|
|
1214
|
+
echoCancellation: false,
|
|
1215
|
+
channelCount: channelCount,
|
|
1216
|
+
autoGainControl: autoGainControl
|
|
1217
|
+
},
|
|
1218
|
+
video: false
|
|
1219
|
+
};
|
|
1220
|
+
if (ua.detectedBrowser === Browser$1.Edge) {
|
|
875
1221
|
// Microsoft Edge sends unmodified audio
|
|
876
1222
|
// The constraint can follow the specification
|
|
877
1223
|
console.info("Setting media track constraints for Microsoft Edge.");
|
|
@@ -879,12 +1225,13 @@
|
|
|
879
1225
|
audio: {
|
|
880
1226
|
deviceId: selDeviceId,
|
|
881
1227
|
echoCancellation: false,
|
|
882
|
-
channelCount: channelCount
|
|
1228
|
+
channelCount: channelCount,
|
|
1229
|
+
autoGainControl: autoGainControl
|
|
883
1230
|
},
|
|
884
1231
|
video: false
|
|
885
1232
|
};
|
|
886
1233
|
}
|
|
887
|
-
else if (
|
|
1234
|
+
else if (ua.detectedBrowser === Browser$1.Chrome) {
|
|
888
1235
|
// Google Chrome: we need to switch of each of the preprocessing units including the
|
|
889
1236
|
console.info("Setting media track constraints for Google Chrome.");
|
|
890
1237
|
// Chrome 60 -> 61 changed
|
|
@@ -892,47 +1239,38 @@
|
|
|
892
1239
|
// Requires at least Chrome 61
|
|
893
1240
|
msc = {
|
|
894
1241
|
audio: {
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
"googExperimentalEchoCancellation": false,
|
|
901
|
-
"googAutoGainControl": false,
|
|
902
|
-
"googTypingNoiseDetection": false,
|
|
903
|
-
"googNoiseSuppression": false,
|
|
904
|
-
"googHighpassFilter": false,
|
|
905
|
-
"googBeamforming": false
|
|
1242
|
+
deviceId: selDeviceId,
|
|
1243
|
+
channelCount: channelCount,
|
|
1244
|
+
echoCancellation: { exact: chromeEchoCancellation },
|
|
1245
|
+
autoGainControl: { exact: autoGainControl },
|
|
1246
|
+
sampleSize: { min: 16 },
|
|
906
1247
|
},
|
|
907
1248
|
video: false,
|
|
908
1249
|
};
|
|
909
1250
|
}
|
|
910
|
-
else if (
|
|
1251
|
+
else if (ua.detectedBrowser === Browser$1.Firefox) {
|
|
911
1252
|
console.info("Setting media track constraints for Mozilla Firefox.");
|
|
912
1253
|
// Firefox
|
|
913
1254
|
msc = {
|
|
914
1255
|
audio: {
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
"mozAutoGainControl": false,
|
|
921
|
-
"noiseSuppression": false,
|
|
922
|
-
"mozNoiseSuppression": false
|
|
1256
|
+
deviceId: selDeviceId,
|
|
1257
|
+
channelCount: channelCount,
|
|
1258
|
+
echoCancellation: false,
|
|
1259
|
+
autoGainControl: autoGainControl,
|
|
1260
|
+
noiseSuppression: false
|
|
923
1261
|
},
|
|
924
1262
|
video: false,
|
|
925
1263
|
};
|
|
926
1264
|
}
|
|
927
|
-
else if (
|
|
1265
|
+
else if (ua.detectedBrowser === Browser$1.Safari) {
|
|
928
1266
|
console.info("Setting media track constraints for Safari browser.");
|
|
929
1267
|
console.info("Apply workaround for Safari: Avoid disconnect of streams.");
|
|
930
1268
|
this.disconnectStreams = false;
|
|
931
1269
|
msc = {
|
|
932
1270
|
audio: {
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
1271
|
+
deviceId: selDeviceId,
|
|
1272
|
+
channelCount: channelCount,
|
|
1273
|
+
echoCancellation: false
|
|
936
1274
|
},
|
|
937
1275
|
video: false,
|
|
938
1276
|
};
|
|
@@ -940,6 +1278,7 @@
|
|
|
940
1278
|
else {
|
|
941
1279
|
// TODO default constraints or error Browser not supported
|
|
942
1280
|
}
|
|
1281
|
+
console.debug("Audio capture, AGC: " + this.agcStatus);
|
|
943
1282
|
var ump = navigator.mediaDevices.getUserMedia(msc);
|
|
944
1283
|
ump.then(function (s) {
|
|
945
1284
|
_this.stream = s;
|
|
@@ -947,6 +1286,11 @@
|
|
|
947
1286
|
for (var i = 0; i < aTracks.length; i++) {
|
|
948
1287
|
var aTrack = aTracks[i];
|
|
949
1288
|
console.info("Track audio info: id: " + aTrack.id + " kind: " + aTrack.kind + " label: \"" + aTrack.label + "\"");
|
|
1289
|
+
var mtrSts = aTrack.getSettings();
|
|
1290
|
+
console.info("Track audio settings: Ch cnt: " + mtrSts.channelCount + ", AGC: " + mtrSts.autoGainControl + ", Echo cancell.: " + mtrSts.echoCancellation);
|
|
1291
|
+
if (mtrSts.autoGainControl) {
|
|
1292
|
+
_this.agcStatus = mtrSts.autoGainControl;
|
|
1293
|
+
}
|
|
950
1294
|
}
|
|
951
1295
|
var vTracks = s.getVideoTracks();
|
|
952
1296
|
for (var i = 0; i < vTracks.length; i++) {
|
|
@@ -956,6 +1300,7 @@
|
|
|
956
1300
|
_this.mediaStream = _this.context.createMediaStreamSource(s);
|
|
957
1301
|
// stream channel count ( is always 2 !)
|
|
958
1302
|
var streamChannelCount = _this.mediaStream.channelCount;
|
|
1303
|
+
console.info("Stream channel count: " + streamChannelCount);
|
|
959
1304
|
// is not set!!
|
|
960
1305
|
//this.currentSampleRate = this.mediaStream.sampleRate;
|
|
961
1306
|
_this.currentSampleRate = _this.context.sampleRate;
|
|
@@ -965,57 +1310,117 @@
|
|
|
965
1310
|
}
|
|
966
1311
|
// W3C -> new name is createScriptProcessor
|
|
967
1312
|
//
|
|
968
|
-
//
|
|
1313
|
+
// Again deprecated, but AudioWorker not yet implemented in stable releases (June 2016)
|
|
969
1314
|
// AudioWorker is now AudioWorkletProcessor ... (May 2017)
|
|
970
1315
|
// Update 12-2020:
|
|
971
1316
|
// The ScriptProcessorNode Interface - DEPRECATED
|
|
972
|
-
//
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
//console.
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
1317
|
+
// Update 06-2021
|
|
1318
|
+
// AudioWorkletProcessor is here to stay. Web Audio API has now Recommendation status !
|
|
1319
|
+
if (ENABLE_AUDIO_WORKLET && _this.context.audioWorklet) {
|
|
1320
|
+
//const workletFileName = ('file-loader!./interceptor_worklet.js');
|
|
1321
|
+
//const workletFileName = 'http://localhost:4200/assets/interceptor_worklet.js';
|
|
1322
|
+
//console.log(awpStr);
|
|
1323
|
+
var audioWorkletModuleBlob = new Blob([awpStr], { type: 'text/javascript' });
|
|
1324
|
+
var audioWorkletModuleBlobUrl = window.URL.createObjectURL(audioWorkletModuleBlob);
|
|
1325
|
+
_this.context.audioWorklet.addModule(audioWorkletModuleBlobUrl).then(function () {
|
|
1326
|
+
var awn = new AudioWorkletNode(_this.context, 'capture-interceptor');
|
|
1327
|
+
awn.onprocessorerror = function (ev) {
|
|
1328
|
+
var msg = 'Unknwon error';
|
|
1329
|
+
if (ev instanceof ErrorEvent) {
|
|
1330
|
+
msg = ev.message;
|
|
1331
|
+
}
|
|
1332
|
+
console.error("Capture audio worklet error: " + msg);
|
|
1333
|
+
if (_this.listener) {
|
|
1334
|
+
_this.listener.error(msg);
|
|
1335
|
+
}
|
|
1336
|
+
};
|
|
1337
|
+
var awnPt = awn.port;
|
|
1338
|
+
if (awnPt) {
|
|
1339
|
+
awnPt.onmessage = function (ev) {
|
|
1340
|
+
if (_this.capturing) {
|
|
1341
|
+
var dt = ev.data;
|
|
1342
|
+
var chs = dt.chs;
|
|
1343
|
+
var adaLen = dt.data.length;
|
|
1344
|
+
if (DEBUG_TRACE_LEVEL > 8) {
|
|
1345
|
+
console.debug('Received data from worklet: ' + chs + ' ' + dt.len + ' Data chs: ' + adaLen);
|
|
1346
|
+
}
|
|
1347
|
+
//let chunkLen = adaLen / chs;
|
|
1348
|
+
var chunkLen = adaLen;
|
|
1349
|
+
var chunk = new Array(chs);
|
|
1350
|
+
for (var ch = 0; ch < chs; ch++) {
|
|
1351
|
+
if (_this.data && _this.data[ch]) {
|
|
1352
|
+
var adaPos = ch * chunkLen;
|
|
1353
|
+
if (dt.data[ch]) {
|
|
1354
|
+
var fa = new Float32Array(dt.data[ch]);
|
|
1355
|
+
_this.data[ch].push(fa);
|
|
1356
|
+
chunk[ch] = fa;
|
|
1357
|
+
// Use samples of channel 0 to count frames (samples)
|
|
1358
|
+
if (ch == 0) {
|
|
1359
|
+
_this.framesRecorded += fa.length;
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
else {
|
|
1363
|
+
if (DEBUG_TRACE_LEVEL > 8) {
|
|
1364
|
+
console.debug('Channel ' + ch + ' data not set!!');
|
|
1365
|
+
}
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
if (_this.audioOutStream) {
|
|
1370
|
+
_this.audioOutStream.write(chunk);
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
};
|
|
1374
|
+
}
|
|
1375
|
+
_this.bufferingNode = awn;
|
|
1376
|
+
_this._opened = true;
|
|
1377
|
+
if (_this.listener) {
|
|
1378
|
+
_this.listener.opened();
|
|
1379
|
+
}
|
|
1380
|
+
}).catch(function (error) {
|
|
1381
|
+
console.log('Could not add module ' + error);
|
|
1382
|
+
});
|
|
987
1383
|
}
|
|
988
|
-
else {
|
|
989
|
-
//
|
|
990
|
-
// The ScriptProcessorNode Interface - DEPRECATED
|
|
991
|
-
//console.debug("Audio script processor implemented!!");
|
|
1384
|
+
else if (_this.context.createScriptProcessor) {
|
|
1385
|
+
// The ScriptProcessorNode Interface - DEPRECATED Only as fallback
|
|
992
1386
|
// TODO should we use streamChannelCount or channelCount here ?
|
|
993
|
-
|
|
1387
|
+
var scriptProcessorNode = _this.context.createScriptProcessor(AudioCapture.BUFFER_SIZE, streamChannelCount, streamChannelCount);
|
|
1388
|
+
_this.bufferingNode = scriptProcessorNode;
|
|
994
1389
|
var c_1 = 0;
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1390
|
+
if (scriptProcessorNode.onaudioprocess) {
|
|
1391
|
+
scriptProcessorNode.onaudioprocess = function (e) {
|
|
1392
|
+
if (_this.capturing) {
|
|
1393
|
+
var inBuffer = e.inputBuffer;
|
|
1394
|
+
var duration = inBuffer.duration;
|
|
1395
|
+
// only process requested count of channels
|
|
1396
|
+
var currentBuffers = new Array(channelCount);
|
|
1397
|
+
for (var ch = 0; ch < channelCount; ch++) {
|
|
1398
|
+
var chSamples = inBuffer.getChannelData(ch);
|
|
1399
|
+
var chSamplesCopy = chSamples.slice(0);
|
|
1400
|
+
currentBuffers[ch] = chSamplesCopy.slice(0);
|
|
1401
|
+
_this.data[ch].push(chSamplesCopy);
|
|
1402
|
+
if (DEBUG_TRACE_LEVEL > 8) {
|
|
1403
|
+
console.debug("Process " + chSamplesCopy.length + " samples.");
|
|
1404
|
+
}
|
|
1405
|
+
_this.framesRecorded += chSamplesCopy.length;
|
|
1406
|
+
}
|
|
1407
|
+
c_1++;
|
|
1408
|
+
if (_this.audioOutStream) {
|
|
1409
|
+
_this.audioOutStream.write(currentBuffers);
|
|
1410
|
+
}
|
|
1012
1411
|
}
|
|
1412
|
+
};
|
|
1413
|
+
_this._opened = true;
|
|
1414
|
+
if (_this.listener) {
|
|
1415
|
+
_this.listener.opened();
|
|
1013
1416
|
}
|
|
1014
|
-
}
|
|
1417
|
+
}
|
|
1418
|
+
else {
|
|
1419
|
+
_this.listener.error('Browser does not support audio processing (ScriptProcessor.onaudioprocess method not found)!');
|
|
1420
|
+
}
|
|
1015
1421
|
}
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
_this.listener.opened();
|
|
1422
|
+
else {
|
|
1423
|
+
_this.listener.error('Browser does not support audio processing (neither AudioWorkletProcessor nor ScriptProcessor)!');
|
|
1019
1424
|
}
|
|
1020
1425
|
}, function (e) {
|
|
1021
1426
|
console.error(e + " Error name: " + e.name);
|
|
@@ -1042,14 +1447,16 @@
|
|
|
1042
1447
|
this.audioOutStream.nextStream();
|
|
1043
1448
|
}
|
|
1044
1449
|
this.capturing = true;
|
|
1045
|
-
|
|
1046
|
-
|
|
1450
|
+
if (this.bufferingNode) {
|
|
1451
|
+
this.mediaStream.connect(this.bufferingNode);
|
|
1452
|
+
this.bufferingNode.connect(this.context.destination);
|
|
1453
|
+
}
|
|
1047
1454
|
if (this.listener) {
|
|
1048
1455
|
this.listener.started();
|
|
1049
1456
|
}
|
|
1050
1457
|
};
|
|
1051
1458
|
AudioCapture.prototype.stop = function () {
|
|
1052
|
-
if (this.disconnectStreams) {
|
|
1459
|
+
if (this.disconnectStreams && this.bufferingNode) {
|
|
1053
1460
|
this.mediaStream.disconnect(this.bufferingNode);
|
|
1054
1461
|
this.bufferingNode.disconnect(this.context.destination);
|
|
1055
1462
|
}
|
|
@@ -1075,7 +1482,7 @@
|
|
|
1075
1482
|
this._opened = false;
|
|
1076
1483
|
};
|
|
1077
1484
|
AudioCapture.prototype.audioBuffer = function () {
|
|
1078
|
-
var
|
|
1485
|
+
var e_2, _a, e_3, _b;
|
|
1079
1486
|
var frameLen = 0;
|
|
1080
1487
|
var ch0Data = this.data[0];
|
|
1081
1488
|
try {
|
|
@@ -1084,31 +1491,31 @@
|
|
|
1084
1491
|
frameLen += ch0Chk.length;
|
|
1085
1492
|
}
|
|
1086
1493
|
}
|
|
1087
|
-
catch (
|
|
1494
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
1088
1495
|
finally {
|
|
1089
1496
|
try {
|
|
1090
1497
|
if (ch0Data_1_1 && !ch0Data_1_1.done && (_a = ch0Data_1.return)) _a.call(ch0Data_1);
|
|
1091
1498
|
}
|
|
1092
|
-
finally { if (
|
|
1499
|
+
finally { if (e_2) throw e_2.error; }
|
|
1093
1500
|
}
|
|
1094
1501
|
var ab = this.context.createBuffer(this.channelCount, frameLen, this.context.sampleRate);
|
|
1095
1502
|
for (var ch = 0; ch < this.channelCount; ch++) {
|
|
1096
1503
|
var chD = ab.getChannelData(ch);
|
|
1097
1504
|
var pos = 0;
|
|
1098
1505
|
try {
|
|
1099
|
-
for (var _c = (
|
|
1506
|
+
for (var _c = (e_3 = void 0, __values(this.data[ch])), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
1100
1507
|
var chChk = _d.value;
|
|
1101
1508
|
var bufLen = chChk.length;
|
|
1102
1509
|
chD.set(chChk, pos);
|
|
1103
1510
|
pos += bufLen;
|
|
1104
1511
|
}
|
|
1105
1512
|
}
|
|
1106
|
-
catch (
|
|
1513
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
1107
1514
|
finally {
|
|
1108
1515
|
try {
|
|
1109
1516
|
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
|
|
1110
1517
|
}
|
|
1111
|
-
finally { if (
|
|
1518
|
+
finally { if (e_3) throw e_3.error; }
|
|
1112
1519
|
}
|
|
1113
1520
|
}
|
|
1114
1521
|
return ab;
|
|
@@ -1823,9 +2230,9 @@
|
|
|
1823
2230
|
}
|
|
1824
2231
|
return SpeechRecorderConfig;
|
|
1825
2232
|
}());
|
|
1826
|
-
SpeechRecorderConfig.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
1827
|
-
SpeechRecorderConfig.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
1828
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
2233
|
+
SpeechRecorderConfig.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechRecorderConfig, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
2234
|
+
SpeechRecorderConfig.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechRecorderConfig });
|
|
2235
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechRecorderConfig, decorators: [{
|
|
1829
2236
|
type: i0.Injectable
|
|
1830
2237
|
}], ctorParameters: function () { return []; } });
|
|
1831
2238
|
|
|
@@ -1878,9 +2285,9 @@
|
|
|
1878
2285
|
return ProjectService;
|
|
1879
2286
|
}());
|
|
1880
2287
|
ProjectService.PROJECT_API_CTX = 'project';
|
|
1881
|
-
ProjectService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
1882
|
-
ProjectService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
1883
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
2288
|
+
ProjectService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ProjectService, deps: [{ token: i1__namespace.HttpClient }, { token: i4__namespace.PlatformLocation }, { token: SPEECHRECORDER_CONFIG }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
2289
|
+
ProjectService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ProjectService });
|
|
2290
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ProjectService, decorators: [{
|
|
1884
2291
|
type: i0.Injectable
|
|
1885
2292
|
}], ctorParameters: function () {
|
|
1886
2293
|
return [{ type: i1__namespace.HttpClient }, { type: i4__namespace.PlatformLocation }, { type: SpeechRecorderConfig, decorators: [{
|
|
@@ -1944,9 +2351,9 @@
|
|
|
1944
2351
|
return SessionService;
|
|
1945
2352
|
}());
|
|
1946
2353
|
SessionService.SESSION_API_CTX = 'session';
|
|
1947
|
-
SessionService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
1948
|
-
SessionService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
1949
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
2354
|
+
SessionService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SessionService, deps: [{ token: i1__namespace.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
2355
|
+
SessionService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SessionService });
|
|
2356
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SessionService, decorators: [{
|
|
1950
2357
|
type: i0.Injectable
|
|
1951
2358
|
}], ctorParameters: function () {
|
|
1952
2359
|
return [{ type: i1__namespace.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
@@ -2254,9 +2661,9 @@
|
|
|
2254
2661
|
};
|
|
2255
2662
|
return LevelBar;
|
|
2256
2663
|
}());
|
|
2257
|
-
LevelBar.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
2258
|
-
LevelBar.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
2259
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
2664
|
+
LevelBar.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: LevelBar, deps: [{ token: i0__namespace.ElementRef }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
2665
|
+
LevelBar.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: LevelBar, selector: "audio-levelbar", inputs: { streamingMode: "streamingMode", displayLevelInfos: "displayLevelInfos" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "virtualCanvasRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "liveLevelCanvasRef", first: true, predicate: ["levelbar"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["markerCanvas"], descendants: true, static: true }], ngImport: i0__namespace, template: "\n <div #virtualCanvas>\n <canvas #levelbar></canvas>\n <canvas #markerCanvas></canvas>\n </div>\n ", isInline: true, styles: [":host {\n\n width: 100%;\n background: darkgray;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n overflow-x: scroll;\n overflow-y: auto;\n }", "div {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n /*position: absolute;*/\n box-sizing: border-box;\n }", "canvas {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: absolute;\n }"] });
|
|
2666
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: LevelBar, decorators: [{
|
|
2260
2667
|
type: i0.Component,
|
|
2261
2668
|
args: [{
|
|
2262
2669
|
selector: 'audio-levelbar',
|
|
@@ -2297,6 +2704,8 @@
|
|
|
2297
2704
|
this.peakDbLevelStr = "-___ dB";
|
|
2298
2705
|
this.peakDbLvl = MIN_DB_LEVEL;
|
|
2299
2706
|
this._displayLevelInfos = null;
|
|
2707
|
+
this._agc = undefined;
|
|
2708
|
+
this.agcString = 'n/a';
|
|
2300
2709
|
this.onShowRecordingDetails = new i0.EventEmitter();
|
|
2301
2710
|
this.onDownloadRecording = new i0.EventEmitter();
|
|
2302
2711
|
this.playStartEnabled = false;
|
|
@@ -2305,6 +2714,24 @@
|
|
|
2305
2714
|
this.destroyed = false;
|
|
2306
2715
|
this.warnDbLevel = DEFAULT_WARN_DB_LEVEL;
|
|
2307
2716
|
}
|
|
2717
|
+
Object.defineProperty(LevelBarDisplay.prototype, "agc", {
|
|
2718
|
+
set: function (agc) {
|
|
2719
|
+
this._agc = agc;
|
|
2720
|
+
if (this._agc === undefined || this._agc === null) {
|
|
2721
|
+
this.agcString = 'n/a';
|
|
2722
|
+
}
|
|
2723
|
+
else {
|
|
2724
|
+
if (this._agc === true) {
|
|
2725
|
+
this.agcString = 'On';
|
|
2726
|
+
}
|
|
2727
|
+
else {
|
|
2728
|
+
this.agcString = 'Off';
|
|
2729
|
+
}
|
|
2730
|
+
}
|
|
2731
|
+
},
|
|
2732
|
+
enumerable: false,
|
|
2733
|
+
configurable: true
|
|
2734
|
+
});
|
|
2308
2735
|
LevelBarDisplay.prototype.ngOnDestroy = function () {
|
|
2309
2736
|
this.destroyed = true;
|
|
2310
2737
|
};
|
|
@@ -2370,13 +2797,13 @@
|
|
|
2370
2797
|
};
|
|
2371
2798
|
return LevelBarDisplay;
|
|
2372
2799
|
}());
|
|
2373
|
-
LevelBarDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
2374
|
-
LevelBarDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
2375
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
2800
|
+
LevelBarDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: LevelBarDisplay, deps: [{ token: i0__namespace.ElementRef }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
2801
|
+
LevelBarDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: LevelBarDisplay, 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 }], ngImport: i0__namespace, template: "\n <audio-levelbar [streamingMode]=\"streamingMode\" [displayLevelInfos]=\"_displayLevelInfos\"></audio-levelbar>\n <button matTooltip=\"Start playback\" (click)=\"playStartAction?.perform()\"\n [disabled]=\"playStartAction?.disabled\"\n [style.color]=\"playStartAction?.disabled ? 'grey' : 'green'\">\n <mat-icon>play_arrow</mat-icon>\n </button>\n <button matTooltip=\"Stop playback\" (click)=\"playStopAction?.perform()\"\n [disabled]=\"playStopAction?.disabled\"\n [style.color]=\"playStopAction?.disabled ? 'grey' : 'yellow'\">\n <mat-icon>stop</mat-icon>\n </button>\n <button matTooltip=\"Toggle detailed audio display\" [disabled]=\"displayAudioBuffer==null\"\n (click)=\"showRecordingDetails()\">\n <mat-icon>{{(audioSignalCollapsed) ? \"expand_less\" : \"expand_more\"}}</mat-icon>\n </button>\n <button matTooltip=\"Download current recording\" *ngIf=\"enableDownload\" [disabled]=\"displayAudioBuffer==null\"\n (click)=\"downloadRecording()\">\n <mat-icon>file_download</mat-icon>\n </button>\n <div style=\"min-width: 14ch;padding:2px\"><table border=\"0\"><tr><td>Peak:</td><td><span matTooltip=\"Peak level\"\n [style.color]=\"(peakDbLvl > warnDbLevel)?'red':'black'\">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>\n <tr *ngIf=\"_agc\"><td>AGC:</td><td><span matTooltip=\"Auto gain control\">{{agcString}}</span></td></tr></table></div>\n ", isInline: true, styles: [":host {\n flex: 0; /* only required vertical space */\n width: 100%;\n background: darkgray;\n padding: 4px;\n box-sizing: border-box;\n height: 100px;\n min-height: 100px;\n display: flex; /* flex container: left level bar, right decimal peak level value */\n flex-direction: row;\n flex-wrap: nowrap; /* wrap could completely destroy the layout */\n }", "audio-levelbar {\n flex: 1;\n box-sizing: border-box;\n }", "span {\n flex: 0;\n font-weight: bold;\n display: inline-block;\n white-space: nowrap;\n box-sizing: border-box;\n }"], components: [{ type: LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos"] }, { type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "number": i4__namespace.DecimalPipe } });
|
|
2802
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: LevelBarDisplay, decorators: [{
|
|
2376
2803
|
type: i0.Component,
|
|
2377
2804
|
args: [{
|
|
2378
2805
|
selector: 'spr-recordingitemdisplay',
|
|
2379
|
-
template: "\n <audio-levelbar [streamingMode]=\"streamingMode\" [displayLevelInfos]=\"_displayLevelInfos\"></audio-levelbar>\n <button matTooltip=\"Start playback\" (click)=\"playStartAction?.perform()\"\n [disabled]=\"playStartAction?.disabled\"\n [style.color]=\"playStartAction?.disabled ? 'grey' : 'green'\">\n <mat-icon>play_arrow</mat-icon>\n </button>\n <button matTooltip=\"Stop playback\" (click)=\"playStopAction?.perform()\"\n [disabled]=\"playStopAction?.disabled\"\n [style.color]=\"playStopAction?.disabled ? 'grey' : 'yellow'\">\n <mat-icon>stop</mat-icon>\n </button>\n <button matTooltip=\"Toggle detailed audio display\" [disabled]=\"displayAudioBuffer==null\"\n (click)=\"showRecordingDetails()\">\n <mat-icon>{{(audioSignalCollapsed) ? \"expand_less\" : \"expand_more\"}}</mat-icon>\n </button>\n <button matTooltip=\"Download current recording\" *ngIf=\"enableDownload\" [disabled]=\"displayAudioBuffer==null\"\n (click)=\"downloadRecording()\">\n <mat-icon>file_download</mat-icon>\n </button>\n <div style=\"min-width: 14ch;padding:2px\"><table border=\"0\"><tr><td>Peak:</td><td><span matTooltip=\"Peak level\"\n [style.color]=\"(peakDbLvl > warnDbLevel)?'red':'black'\">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr></table></div>\n ",
|
|
2806
|
+
template: "\n <audio-levelbar [streamingMode]=\"streamingMode\" [displayLevelInfos]=\"_displayLevelInfos\"></audio-levelbar>\n <button matTooltip=\"Start playback\" (click)=\"playStartAction?.perform()\"\n [disabled]=\"playStartAction?.disabled\"\n [style.color]=\"playStartAction?.disabled ? 'grey' : 'green'\">\n <mat-icon>play_arrow</mat-icon>\n </button>\n <button matTooltip=\"Stop playback\" (click)=\"playStopAction?.perform()\"\n [disabled]=\"playStopAction?.disabled\"\n [style.color]=\"playStopAction?.disabled ? 'grey' : 'yellow'\">\n <mat-icon>stop</mat-icon>\n </button>\n <button matTooltip=\"Toggle detailed audio display\" [disabled]=\"displayAudioBuffer==null\"\n (click)=\"showRecordingDetails()\">\n <mat-icon>{{(audioSignalCollapsed) ? \"expand_less\" : \"expand_more\"}}</mat-icon>\n </button>\n <button matTooltip=\"Download current recording\" *ngIf=\"enableDownload\" [disabled]=\"displayAudioBuffer==null\"\n (click)=\"downloadRecording()\">\n <mat-icon>file_download</mat-icon>\n </button>\n <div style=\"min-width: 14ch;padding:2px\"><table border=\"0\"><tr><td>Peak:</td><td><span matTooltip=\"Peak level\"\n [style.color]=\"(peakDbLvl > warnDbLevel)?'red':'black'\">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>\n <tr *ngIf=\"_agc\"><td>AGC:</td><td><span matTooltip=\"Auto gain control\">{{agcString}}</span></td></tr></table></div>\n ",
|
|
2380
2807
|
styles: [":host {\n flex: 0; /* only required vertical space */\n width: 100%;\n background: darkgray;\n padding: 4px;\n box-sizing: border-box;\n height: 100px;\n min-height: 100px;\n display: flex; /* flex container: left level bar, right decimal peak level value */\n flex-direction: row;\n flex-wrap: nowrap; /* wrap could completely destroy the layout */\n }", "audio-levelbar {\n flex: 1;\n box-sizing: border-box;\n }", "span {\n flex: 0;\n font-weight: bold;\n display: inline-block;\n white-space: nowrap;\n box-sizing: border-box;\n }"]
|
|
2381
2808
|
}]
|
|
2382
2809
|
}], ctorParameters: function () { return [{ type: i0__namespace.ElementRef }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
@@ -2388,6 +2815,8 @@
|
|
|
2388
2815
|
type: i0.Input
|
|
2389
2816
|
}], enableDownload: [{
|
|
2390
2817
|
type: i0.Input
|
|
2818
|
+
}], agc: [{
|
|
2819
|
+
type: i0.Input
|
|
2391
2820
|
}], onShowRecordingDetails: [{
|
|
2392
2821
|
type: i0.Output
|
|
2393
2822
|
}], onDownloadRecording: [{
|
|
@@ -2809,9 +3238,9 @@
|
|
|
2809
3238
|
});
|
|
2810
3239
|
return SimpleTrafficLight;
|
|
2811
3240
|
}());
|
|
2812
|
-
SimpleTrafficLight.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
2813
|
-
SimpleTrafficLight.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
2814
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
3241
|
+
SimpleTrafficLight.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SimpleTrafficLight, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
3242
|
+
SimpleTrafficLight.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: { status: "status" }, ngImport: i0__namespace, template: "\n\n <div>\n <div class=\"circle {{lighttop}}\"></div>\n <div class=\"circle {{lightmid}}\"></div>\n <div class=\"circle {{lightbottom}}\"></div>\n </div>\n ", isInline: true, styles: [".circle {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n margin: 5px;\n background: grey;\n }", ".red {\n background: red;\n }\n ", "\n .yellow {\n background: yellow;\n }\n ", "\n .green {\n background: green;\n }\n ", "\n .black {\n background: black;\n }", ":host {\n display: flex;\n flex-direction: column;\n background: black;\n \n padding: 2px;\n height: 170px;\n max-height: 170px;\n flex: 0 0 content;\n }\n "] });
|
|
3243
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SimpleTrafficLight, decorators: [{
|
|
2815
3244
|
type: i0.Component,
|
|
2816
3245
|
args: [{
|
|
2817
3246
|
selector: 'app-simpletrafficlight',
|
|
@@ -2884,9 +3313,9 @@
|
|
|
2884
3313
|
};
|
|
2885
3314
|
return CanvasLayerComponent;
|
|
2886
3315
|
}());
|
|
2887
|
-
CanvasLayerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
2888
|
-
CanvasLayerComponent.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
|
2889
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
3316
|
+
CanvasLayerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: CanvasLayerComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
|
|
3317
|
+
CanvasLayerComponent.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: CanvasLayerComponent, ngImport: i0__namespace });
|
|
3318
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: CanvasLayerComponent, decorators: [{
|
|
2890
3319
|
type: i0.Directive
|
|
2891
3320
|
}], ctorParameters: function () { return []; } });
|
|
2892
3321
|
|
|
@@ -3171,9 +3600,9 @@
|
|
|
3171
3600
|
};
|
|
3172
3601
|
return BasicAudioCanvasLayerComponent;
|
|
3173
3602
|
}(CanvasLayerComponent));
|
|
3174
|
-
BasicAudioCanvasLayerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
3175
|
-
BasicAudioCanvasLayerComponent.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
|
3176
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
3603
|
+
BasicAudioCanvasLayerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: BasicAudioCanvasLayerComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Directive });
|
|
3604
|
+
BasicAudioCanvasLayerComponent.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: BasicAudioCanvasLayerComponent, usesInheritance: true, ngImport: i0__namespace });
|
|
3605
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: BasicAudioCanvasLayerComponent, decorators: [{
|
|
3177
3606
|
type: i0.Directive
|
|
3178
3607
|
}] });
|
|
3179
3608
|
var AudioCanvasLayerComponent = /** @class */ (function (_super) {
|
|
@@ -3391,9 +3820,9 @@
|
|
|
3391
3820
|
};
|
|
3392
3821
|
return AudioCanvasLayerComponent;
|
|
3393
3822
|
}(BasicAudioCanvasLayerComponent));
|
|
3394
|
-
AudioCanvasLayerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
3395
|
-
AudioCanvasLayerComponent.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
|
3396
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
3823
|
+
AudioCanvasLayerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioCanvasLayerComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Directive });
|
|
3824
|
+
AudioCanvasLayerComponent.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: AudioCanvasLayerComponent, inputs: { pointerPosition: "pointerPosition", selecting: "selecting", selection: "selection" }, outputs: { pointerPositionEventEmitter: "pointerPositionEventEmitter", selectingEventEmitter: "selectingEventEmitter", selectedEventEmitter: "selectedEventEmitter" }, host: { listeners: { "document:mouseup": "onMouseup($event)" } }, viewQueries: [{ propertyName: "bgCanvasRef", first: true, predicate: ["bg"], descendants: true, static: true }, { propertyName: "cursorCanvasRef", first: true, predicate: ["cursor"], descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace });
|
|
3825
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioCanvasLayerComponent, decorators: [{
|
|
3397
3826
|
type: i0.Directive
|
|
3398
3827
|
}], propDecorators: { bgCanvasRef: [{
|
|
3399
3828
|
type: i0.ViewChild,
|
|
@@ -3726,9 +4155,9 @@
|
|
|
3726
4155
|
};
|
|
3727
4156
|
return AudioSignal;
|
|
3728
4157
|
}(AudioCanvasLayerComponent));
|
|
3729
|
-
AudioSignal.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
3730
|
-
AudioSignal.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
3731
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
4158
|
+
AudioSignal.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioSignal, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
4159
|
+
AudioSignal.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: AudioSignal, selector: "audio-signal", viewQueries: [{ propertyName: "audioSignalCanvasRef", first: true, predicate: ["audioSignal"], descendants: true, static: true }, { propertyName: "playPosCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "\n <canvas #bg height=\"10\"></canvas>\n <canvas #audioSignal height=\"10\"></canvas>\n <canvas #cursor height=\"10\" (mousedown)=\"selectionStart($event)\" (mouseover)=\"updateCursorCanvas($event)\" (mousemove)=\"updateCursorCanvas($event)\"\n (mouseleave)=\"updateCursorCanvas($event, false)\"></canvas>\n <canvas #marker height=\"10\"></canvas>", isInline: true, styles: [":host{\n min-height: 0px;\n }", "canvas {\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n min-height: 0px;\n position: absolute;\n }"] });
|
|
4160
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioSignal, decorators: [{
|
|
3732
4161
|
type: i0.Component,
|
|
3733
4162
|
args: [{
|
|
3734
4163
|
selector: 'audio-signal',
|
|
@@ -4664,9 +5093,9 @@
|
|
|
4664
5093
|
};
|
|
4665
5094
|
return Sonagram;
|
|
4666
5095
|
}(AudioCanvasLayerComponent));
|
|
4667
|
-
Sonagram.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
4668
|
-
Sonagram.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
4669
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5096
|
+
Sonagram.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Sonagram, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5097
|
+
Sonagram.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: Sonagram, selector: "audio-sonagram", viewQueries: [{ propertyName: "sonagramCanvasRef", first: true, predicate: ["sonagram"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "\n <canvas #sonagram height=\"10\"></canvas>\n <canvas #bg height=\"10\"></canvas>\n <canvas #cursor height=\"10\" (mousedown)=\"selectionStart($event)\" (mouseover)=\"updateCursorCanvas($event)\" (mousemove)=\"updateCursorCanvas($event)\"\n (mouseleave)=\"updateCursorCanvas($event, false)\"></canvas>\n <canvas #marker height=\"10\"></canvas>", isInline: true, styles: [":host{\n min-height: 0px;\n }", "canvas {\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n min-height: 0px;\n position: absolute;\n }"] });
|
|
5098
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Sonagram, decorators: [{
|
|
4670
5099
|
type: i0.Component,
|
|
4671
5100
|
args: [{
|
|
4672
5101
|
selector: 'audio-sonagram',
|
|
@@ -5025,9 +5454,9 @@
|
|
|
5025
5454
|
return AudioClipUIContainer;
|
|
5026
5455
|
}(BasicAudioCanvasLayerComponent));
|
|
5027
5456
|
AudioClipUIContainer.DIVIDER_PIXEL_SIZE = 10;
|
|
5028
|
-
AudioClipUIContainer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5029
|
-
AudioClipUIContainer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5030
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5457
|
+
AudioClipUIContainer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioClipUIContainer, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5458
|
+
AudioClipUIContainer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: AudioClipUIContainer, selector: "app-audio", inputs: { audioData: "audioData", audioClip: "audioClip" }, outputs: { selectionEventEmitter: "selectionEventEmitter" }, host: { listeners: { "window:resize": "onResize($event)", "document:mouseup": "onMouseup($event)", "document:mousemove": "onMousemove($event)" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["divider"], descendants: true, static: true }, { propertyName: "ceRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "as", first: true, predicate: AudioSignal, descendants: true, static: true }, { propertyName: "so", first: true, predicate: Sonagram, descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "\n <div #virtualCanvas>\n <canvas #divider (mousedown)=\"mousedown($event)\" (mouseover)=\"mouseover($event)\"\n (mouseleave)=\"mouseleave($event)\" height=\"10\"></canvas>\n <audio-signal [pointerPosition]=\"pointer\" [selecting]=\"selecting\" [selection]=\"selection\" (pointerPositionEventEmitter)=\"pointerPositionChanged($event)\" (selectingEventEmitter)=\"selectingChanged($event)\" (selectedEventEmitter)=\"selectionChanged($event)\"></audio-signal>\n <audio-sonagram [pointerPosition]=\"pointer\" [selecting]=\"selecting\" [selection]=\"selection\" (pointerPositionEventEmitter)=\"pointerPositionChanged($event)\" (selectingEventEmitter)=\"selectingChanged($event)\" (selectedEventEmitter)=\"selectionChanged($event)\"></audio-sonagram>\n </div>\n ", isInline: true, styles: ["div {\n\n margin: 0;\n padding: 0;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: relative; /* TODO container div position must not be 'static' (default) to act as reference for the canvases */\n box-sizing: border-box;\n transform: none;\n }", "canvas{\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n cursor: ns-resize;\n position: absolute;\n zIndex: 1;\n transform: none;\n }", "audio-signal {\n top: 0;\n left: 0;\n position: absolute;\n zIndex: 1;\n transform: none;\n }", "audio-sonagram {\n top: 0;\n left: 0;\n position: absolute;\n zIndex: 1;\n transform: none;\n }"], components: [{ type: AudioSignal, selector: "audio-signal" }, { type: Sonagram, selector: "audio-sonagram" }] });
|
|
5459
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioClipUIContainer, decorators: [{
|
|
5031
5460
|
type: i0.Component,
|
|
5032
5461
|
args: [{
|
|
5033
5462
|
selector: 'app-audio',
|
|
@@ -5188,9 +5617,9 @@
|
|
|
5188
5617
|
});
|
|
5189
5618
|
return AudioDisplayScrollPane;
|
|
5190
5619
|
}());
|
|
5191
|
-
AudioDisplayScrollPane.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5192
|
-
AudioDisplayScrollPane.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5193
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5620
|
+
AudioDisplayScrollPane.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplayScrollPane, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5621
|
+
AudioDisplayScrollPane.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: { audioClip: "audioClip" }, outputs: { zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomSelectedAction: "zoomSelectedAction", zoomFitToPanelAction: "zoomFitToPanelAction" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "ac", first: true, predicate: AudioClipUIContainer, descendants: true, static: true }], ngImport: i0__namespace, template: "\n\n <app-audio #audioSignalContainer (selectionEventEmitter)=\"selectionChanged($event)\"></app-audio>\n\n ", isInline: true, styles: [":host {\n flex: 2;\n width: 100%;\n background: darkgray;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n overflow-x: scroll;\n overflow-y: auto;\n }", "app-audio {\n\n margin: 0;\n padding: 0;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n /*position: absolute;*/\n box-sizing: border-box;\n }"], components: [{ type: AudioClipUIContainer, selector: "app-audio", inputs: ["audioData", "audioClip"], outputs: ["selectionEventEmitter"] }] });
|
|
5622
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplayScrollPane, decorators: [{
|
|
5194
5623
|
type: i0.Component,
|
|
5195
5624
|
args: [{
|
|
5196
5625
|
selector: 'audio-display-scroll-pane',
|
|
@@ -5254,9 +5683,9 @@
|
|
|
5254
5683
|
};
|
|
5255
5684
|
return AudioDisplayControl;
|
|
5256
5685
|
}());
|
|
5257
|
-
AudioDisplayControl.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5258
|
-
AudioDisplayControl.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5259
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5686
|
+
AudioDisplayControl.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplayControl, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5687
|
+
AudioDisplayControl.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: AudioDisplayControl, selector: "audio-display-control", inputs: { audioClip: "audioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", playStopAction: "playStopAction", zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomFitToPanelAction: "zoomFitToPanelAction", zoomSelectedAction: "zoomSelectedAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction" }, viewQueries: [{ propertyName: "autoplaySelectedCheckbox", first: true, predicate: i2$1.MatCheckbox, descendants: true, static: true }], ngImport: i0__namespace, template: "\n <div #controlPanel style=\"display:flex;flex-direction: row;\">\n <fieldset>\n\n <legend>Play</legend>\n\n <button (click)=\"playStartAction?.perform()\" [disabled]=\"playStartAction?.disabled\"\n [style.color]=\"playStartAction?.disabled ? 'grey' : 'green'\" matTooltip=\"Play all\">\n <mat-icon>play_arrow</mat-icon>\n </button>\n <button (click)=\"playSelectionAction?.perform()\" [disabled]=\"playSelectionAction?.disabled\"\n [style.color]=\"playSelectionAction?.disabled ? 'grey' : 'green'\" matTooltip=\"Play selection\">\n <mat-icon>play_circle_outline</mat-icon>\n </button>\n <button (click)=\"playStopAction?.perform()\" [disabled]=\"playStopAction?.disabled\"\n [style.color]=\"playStopAction?.disabled ? 'grey' : 'yellow'\">\n <mat-icon>stop</mat-icon>\n </button> \n <mat-checkbox #autoplaySelectionCheckbox (change)=\"autoPlaySelectionChange($event)\">Autoplay on select\n </mat-checkbox>\n </fieldset>\n <fieldset>\n\n <legend>Zoom</legend>\n <button (click)=\"zoomFitToPanelAction?.perform()\"\n [disabled]=\"zoomFitToPanelAction?.disabled\">{{zoomFitToPanelAction?.name}}</button>\n <button (click)=\"zoomOutAction?.perform()\"\n [disabled]=\"zoomOutAction?.disabled\">{{zoomOutAction?.name}}</button>\n <button (click)=\"zoomInAction?.perform()\"\n [disabled]=\"zoomInAction?.disabled\">{{zoomInAction?.name}}</button>\n <button (click)=\"zoomSelectedAction?.perform()\"\n [disabled]=\"zoomSelectedAction?.disabled\">{{zoomSelectedAction?.name}}</button>\n </fieldset>\n <fieldset>\n <legend>Selection</legend>\n {{audioClip?.selection?.leftFrame}} <span\n *ngIf=\"audioClip?.selection\">to</span> {{audioClip?.selection?.rightFrame}}\n <button (click)=\"clearSelection()\" [disabled]=\"audioClip?.selection==null\"\n [style.color]=\"hasSelection() ? 'red' : 'grey'\" matTooltip=\"Clear selection\">\n <mat-icon>clear</mat-icon>\n </button>\n\n </fieldset>\n </div>", isInline: true, styles: [":host {\n flex: 0;\n\n }"], components: [{ type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2__namespace$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i3__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
5688
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplayControl, decorators: [{
|
|
5260
5689
|
type: i0.Component,
|
|
5261
5690
|
args: [{
|
|
5262
5691
|
selector: 'audio-display-control',
|
|
@@ -5366,9 +5795,9 @@
|
|
|
5366
5795
|
};
|
|
5367
5796
|
return AudioDisplay;
|
|
5368
5797
|
}());
|
|
5369
|
-
AudioDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5370
|
-
AudioDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5371
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5798
|
+
AudioDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplay, deps: [{ token: i1__namespace$1.ActivatedRoute }, { token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5799
|
+
AudioDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: AudioDisplay, selector: "app-audiodisplay", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0__namespace, template: "\n\n <audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>\n\n <audio-display-control [audioClip]=\"audioClip\"\n [playStartAction]=\"playStartAction\"\n [playSelectionAction]=\"playSelectionAction\"\n [playStopAction]=\"playStopAction\"\n [autoPlayOnSelectToggleAction]=\"autoPlayOnSelectToggleAction\"\n [zoomInAction]=\"zoomInAction\"\n [zoomOutAction]=\"zoomOutAction\"\n [zoomSelectedAction]=\"zoomSelectedAction\"\n [zoomFitToPanelAction]=\"zoomFitToPanelAction\"></audio-display-control>\n ", isInline: true, styles: [":host {\n display: flex;\n flex-direction: column;\n position: absolute;\n bottom: 0px;\n height: 100%;\n width: 100%;\n overflow: hidden;\n padding: 20px;\n z-index: 5;\n box-sizing: border-box;\n background-color: rgba(230, 230, 230, 1.0)\n }", "\n legend{\n margin-left: 1em; padding: 0.2em 0.8em;font-size: 0.8em;\n }", "\n fieldset{\n border: 1px darkgray solid\n }\n "], components: [{ type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }] });
|
|
5800
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplay, decorators: [{
|
|
5372
5801
|
type: i0.Component,
|
|
5373
5802
|
args: [{
|
|
5374
5803
|
selector: 'app-audiodisplay',
|
|
@@ -5409,9 +5838,9 @@
|
|
|
5409
5838
|
});
|
|
5410
5839
|
return ScrollIntoViewDirective;
|
|
5411
5840
|
}());
|
|
5412
|
-
ScrollIntoViewDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5413
|
-
ScrollIntoViewDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
|
5414
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5841
|
+
ScrollIntoViewDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ScrollIntoViewDirective, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Directive });
|
|
5842
|
+
ScrollIntoViewDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: { scrollIntoViewToBottom: "scrollIntoViewToBottom" }, ngImport: i0__namespace });
|
|
5843
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ScrollIntoViewDirective, decorators: [{
|
|
5415
5844
|
type: i0.Directive,
|
|
5416
5845
|
args: [{
|
|
5417
5846
|
selector: "[scrollIntoViewToBottom]"
|
|
@@ -5458,9 +5887,9 @@
|
|
|
5458
5887
|
});
|
|
5459
5888
|
return Progress;
|
|
5460
5889
|
}());
|
|
5461
|
-
Progress.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5462
|
-
Progress.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5463
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5890
|
+
Progress.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Progress, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5891
|
+
Progress.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: Progress, selector: "app-sprprogress", inputs: { items: "items", selectedItemIdx: "selectedItemIdx", enableDownload: "enableDownload" }, outputs: { onRowSelect: "onRowSelect", rowSelect: "rowSelect", onShowDoneAction: "onShowDoneAction", clickDone: "clickDone", onDownloadDoneAction: "onDownloadDoneAction", clickDownloadDone: "clickDownloadDone" }, ngImport: i0__namespace, template: "\n\n <table class=\"mat-typography\">\n <thead>\n <tr>\n <th>#</th><!--<th>Code</th>-->\n <th>Prompt</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"items\">\n\n <tr *ngFor=\"let item of items; let itIdx=index;\"\n (click)=\"rowSelect=itIdx\" [class.selRow]=\"itIdx===selectedItemIdx\"\n [scrollIntoViewToBottom]=\"itIdx===selectedItemIdx\">\n <td>{{itIdx}}</td>\n <td class=\"promptDescriptor\">{{item.promptAsString}}</td>\n <td>\n <mat-icon *ngIf=\"item.recs && item.recs.length>0\">done</mat-icon>\n\n </td>\n </tr>\n </ng-container>\n\n </tbody>\n </table>\n ", isInline: true, styles: [":host {\n overflow-x: hidden;\n overflow-y: scroll;\n padding: 10pt;\n /*flex: 0.1 0 300px; \n min-width: 300px; */\n flex: 0.1 0 content;\n background: white;\n /* Workaround for Firefox\n If the progress table gets long (script with many items) FF increases the height of the overflow progressContainer and\n the whole app does not fit into the page anymore. The app overflows and shows a vertical scrollbar for the whole app.\n See http://stackoverflow.com/questions/28636832/firefox-overflow-y-not-working-with-nested-flexbox\n */\n /* min-height:0px; */\n min-height: 1px;\n }", "table {\n min-height: 1px;\n border-collapse: collapse;\n /* Tables do not have a natural min size */\n /*min-width: 300px; */\n \n }\n\n table, th, td {\n border: 1px solid lightgrey;\n padding: 0.5em;\n \n }\n\n ", "\n .selRow {\n background: lightblue;\n }\n ", ".promptDescriptor{\n \n max-width: 200px;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }"], components: [{ type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }] });
|
|
5892
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Progress, decorators: [{
|
|
5464
5893
|
type: i0.Component,
|
|
5465
5894
|
args: [{
|
|
5466
5895
|
selector: 'app-sprprogress',
|
|
@@ -5503,9 +5932,9 @@
|
|
|
5503
5932
|
};
|
|
5504
5933
|
return Recinstructions;
|
|
5505
5934
|
}());
|
|
5506
|
-
Recinstructions.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5507
|
-
Recinstructions.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5508
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5935
|
+
Recinstructions.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Recinstructions, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
5936
|
+
Recinstructions.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: Recinstructions, selector: "spr-recinstructions", inputs: { recinstructions: "recinstructions", selectedItemIdx: "selectedItemIdx", itemCount: "itemCount" }, ngImport: i0__namespace, template: "\n\n {{displayText()}}\n ", isInline: true, styles: [":host {\n\n justify-content: left; /* align horizontal center */\n align-items: flex-start; /* align vertical center */\n background: white;\n text-align: left;\n font-size: 1em;\n flex: 0;\n width: 100%;\n }\n "] });
|
|
5937
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Recinstructions, decorators: [{
|
|
5509
5938
|
type: i0.Component,
|
|
5510
5939
|
args: [{
|
|
5511
5940
|
selector: 'spr-recinstructions',
|
|
@@ -5693,9 +6122,9 @@
|
|
|
5693
6122
|
});
|
|
5694
6123
|
return Prompter;
|
|
5695
6124
|
}());
|
|
5696
|
-
Prompter.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5697
|
-
Prompter.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5698
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6125
|
+
Prompter.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Prompter, deps: [{ token: i0__namespace.ElementRef }, { token: i0__namespace.Renderer2 }, { token: ProjectService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6126
|
+
Prompter.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: Prompter, selector: "app-sprprompter", inputs: { projectName: "projectName", prompterHeight: "prompterHeight", promptMediaItems: "promptMediaItems" }, host: { properties: { "class.fill": "this.prompterStyleFill" } }, ngImport: i0__namespace, template: "\n\n <!--<ng-template [ngIf]=\"text\">{{text}}</ng-template>-->\n <!-- <img *ngIf=\"src\" #promptImage [src]=\"srcUrl()\" [height]=\"prompterHeight-20\" /> -->\n ", isInline: true, styles: [":host {\n\n justify-content: center; /* align horizontal center */\n align-items: center; /* align vertical center */\n background: white;\n text-align: center;\n /* font-size: 2em; */\n line-height: 1.2em;\n font-weight: bold;\n /* Use only natural size of the prompt */\n /* The prompter compnent then ets aligned vertically centered */\n flex: 0 1;\n\n }", ":host(.fill) {\n /* Use all space to scale images */\n flex: 3;\n width: 100%;\n height: 100%;\n max-height: 100%;\n max-width: 100%;\n /* A separate flex container might be necessayr to alighn centered */\n vertical-align: middle; /* TODO does not work, image is not vertically centered */\n }"] });
|
|
6127
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Prompter, decorators: [{
|
|
5699
6128
|
type: i0.Component,
|
|
5700
6129
|
args: [{
|
|
5701
6130
|
selector: 'app-sprprompter',
|
|
@@ -5850,9 +6279,9 @@
|
|
|
5850
6279
|
};
|
|
5851
6280
|
return PromptContainer;
|
|
5852
6281
|
}());
|
|
5853
|
-
PromptContainer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5854
|
-
PromptContainer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5855
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6282
|
+
PromptContainer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: PromptContainer, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6283
|
+
PromptContainer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: PromptContainer, selector: "app-sprpromptcontainer", inputs: { projectName: "projectName", mediaitems: "mediaitems" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "prompter", first: true, predicate: Prompter, descendants: true, static: true }], ngImport: i0__namespace, template: "\n <app-sprprompter #prompter [projectName]=\"projectName\" [promptMediaItems]=\"mediaitems\" [style.font-size]=\"fontSize+'px'\" [style.visibility]=\"prDisplay\" [prompterHeight]=\"prompterHeight\"></app-sprprompter>\n ", isInline: true, styles: [":host {\n\n flex: 3; /* the container consumes all available space */\n padding: 10pt;\n height: 100%;\n max-height: 100%;\n\n justify-content: center; /* align horizontal center*/\n align-items: center; /* align vertical center */\n background: white;\n text-align: center;\n display: flex;\n flex-direction: column;\n min-height: 0px;\n width: 100%;\n }\n "], components: [{ type: Prompter, selector: "app-sprprompter", inputs: ["projectName", "prompterHeight", "promptMediaItems"] }] });
|
|
6284
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: PromptContainer, decorators: [{
|
|
5856
6285
|
type: i0.Component,
|
|
5857
6286
|
args: [{
|
|
5858
6287
|
selector: 'app-sprpromptcontainer',
|
|
@@ -5978,9 +6407,9 @@
|
|
|
5978
6407
|
};
|
|
5979
6408
|
return PromptingContainer;
|
|
5980
6409
|
}());
|
|
5981
|
-
PromptingContainer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
5982
|
-
PromptingContainer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
5983
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6410
|
+
PromptingContainer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: PromptingContainer, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6411
|
+
PromptingContainer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: PromptingContainer, selector: "app-sprpromptingcontainer", inputs: { projectName: "projectName", promptItem: "promptItem", showPrompt: "showPrompt", selectedItemIdx: "selectedItemIdx", itemCount: "itemCount", transportActions: "transportActions" }, host: { listeners: { "touchstart": "onTouchstart($event)", "touchend": "onTouchEnd($event)", "touchmove": "onTouchMove($event)", "touchcancel": "onTouchCancel($event)" } }, ngImport: i0__namespace, template: "\n <spr-recinstructions [selectedItemIdx]=\"selectedItemIdx\" [itemCount]=\"itemCount\"\n [recinstructions]=\"promptItem?.recinstructions?.recinstructions\"></spr-recinstructions>\n <app-sprpromptcontainer [projectName]=\"projectName\"\n [mediaitems]=\"showPrompt?(promptItem?promptItem.mediaitems:null):null\"></app-sprpromptcontainer>\n\n ", isInline: true, styles: [":host {\n position: relative;\n flex: 3; /* the container consumes all available space */\n padding: 10pt;\n justify-content: center; /* align horizontal center*/\n align-items: center; /* align vertical center */\n background: white;\n text-align: center;\n display: flex;\n flex-direction: column;\n min-height: 0px;\n }\n "], components: [{ type: Recinstructions, selector: "spr-recinstructions", inputs: ["recinstructions", "selectedItemIdx", "itemCount"] }, { type: PromptContainer, selector: "app-sprpromptcontainer", inputs: ["projectName", "mediaitems"] }] });
|
|
6412
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: PromptingContainer, decorators: [{
|
|
5984
6413
|
type: i0.Component,
|
|
5985
6414
|
args: [{
|
|
5986
6415
|
selector: 'app-sprpromptingcontainer',
|
|
@@ -6035,9 +6464,9 @@
|
|
|
6035
6464
|
};
|
|
6036
6465
|
return Prompting;
|
|
6037
6466
|
}());
|
|
6038
|
-
Prompting.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6039
|
-
Prompting.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6040
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6467
|
+
Prompting.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Prompting, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6468
|
+
Prompting.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: Prompting, selector: "app-sprprompting", inputs: { projectName: "projectName", startStopSignalState: "startStopSignalState", promptItem: "promptItem", showPrompt: "showPrompt", items: "items", selectedItemIdx: "selectedItemIdx", transportActions: "transportActions", enableDownload: "enableDownload", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { onItemSelect: "onItemSelect", onNextItem: "onNextItem", onPrevItem: "onPrevItem" }, viewQueries: [{ propertyName: "simpleTrafficLight", first: true, predicate: SimpleTrafficLight, descendants: true, static: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], ngImport: i0__namespace, template: "\n\n <app-simpletrafficlight [status]=\"startStopSignalState\"></app-simpletrafficlight>\n <app-sprpromptingcontainer [projectName]=\"projectName\" [promptItem]=\"promptItem\" [showPrompt]=\"showPrompt\"\n [itemCount]=\"items?.length\" [selectedItemIdx]=\"selectedItemIdx\"\n [transportActions]=\"transportActions\"></app-sprpromptingcontainer>\n <app-sprprogress fxHide.xs [items]=\"items\" [selectedItemIdx]=\"selectedItemIdx\"\n (onRowSelect)=\"itemSelect($event)\"></app-sprprogress>\n <div #asCt [class.active]=\"!audioSignalCollapsed\">\n\n <app-audiodisplay #audioSignalContainer [class.active]=\"!audioSignalCollapsed\"\n [audioClip]=\"displayAudioClip\"\n [playStartAction]=\"playStartAction\"\n [playSelectionAction]=\"playSelectionAction\"\n [autoPlayOnSelectToggleAction]=\"autoPlayOnSelectToggleAction\"\n [playStopAction]=\"playStopAction\"></app-audiodisplay>\n\n\n </div>\n\n\n\n ", isInline: true, styles: [":host {\n position: relative;\n margin: 0;\n padding: 0;\n background: lightgrey;\n width: 100%; /* use all horizontal available space */\n flex: 1; /* ... and fill rest of vertical available space (other components have flex 0) */\n\n /* Workaround for Firefox\n If the progress table gets long (script with many items) FF increases the height of the overflow progressContainer and\n the whole app does not fit into the page anymore. The app overflows and shows a vertical scrollbar for the whole app.\n See http://stackoverflow.com/questions/28636832/firefox-overflow-y-not-working-with-nested-flexbox\n */\n min-height: 0px;\n\n display: flex; /* flex container: left traffic light, right prompter (container) */\n flex-direction: row;\n flex-wrap: nowrap; /* wrap could completely destroy the layout */\n }", "\n app-simpletrafficlight {\n margin: 10px;\n min-height: 0px;\n z-index: 3;\n }\n ", "\n app-sprprogress {\n z-index: 3;\n }\n ", "\n div {\n display: none;\n position: absolute;\n\n\n /* height: 50%; */\n /* width: 100%; */\n\n /* overflow: hidden; */\n\n /* margin: 20px; */\n /* border: 20px; */\n z-index: 5;\n /*background-color: red; */\n }", "\n div.active {\n display: flex;\n position: absolute;\n bottom: 0px;\n /*left: 0px; */\n\n height: 90%;\n width: 100%;\n\n overflow: hidden;\n\n padding: 0px;\n /* margin: 20px; */\n /* border: 20px; */\n z-index: 5;\n box-sizing: border-box;\n background-color: rgba(0, 0, 0, 0)\n\n }"], components: [{ type: SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: ["status"] }, { type: PromptingContainer, selector: "app-sprpromptingcontainer", inputs: ["projectName", "promptItem", "showPrompt", "selectedItemIdx", "itemCount", "transportActions"] }, { type: Progress, selector: "app-sprprogress", inputs: ["items", "selectedItemIdx", "enableDownload"], outputs: ["onRowSelect", "rowSelect", "onShowDoneAction", "clickDone", "onDownloadDoneAction", "clickDownloadDone"] }, { type: AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }], directives: [{ type: i6__namespace.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }] });
|
|
6469
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: Prompting, decorators: [{
|
|
6041
6470
|
type: i0.Component,
|
|
6042
6471
|
args: [{
|
|
6043
6472
|
selector: 'app-sprprompting',
|
|
@@ -6132,12 +6561,13 @@
|
|
|
6132
6561
|
toFill = avail;
|
|
6133
6562
|
}
|
|
6134
6563
|
var sliceEnd = copied + toFill;
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
|
|
6139
|
-
|
|
6140
|
-
|
|
6564
|
+
// Firefox on Android sends only the first channel
|
|
6565
|
+
for (var ch = 0; ch < buffersLen; ch++) {
|
|
6566
|
+
if (buffers[ch]) {
|
|
6567
|
+
var cpPrt = buffers[ch].slice(copied, sliceEnd);
|
|
6568
|
+
var buf = this.bufs[ch];
|
|
6569
|
+
buf.set(cpPrt, this.filled);
|
|
6570
|
+
}
|
|
6141
6571
|
}
|
|
6142
6572
|
copied += toFill;
|
|
6143
6573
|
avail -= toFill;
|
|
@@ -6198,9 +6628,9 @@
|
|
|
6198
6628
|
}
|
|
6199
6629
|
return StatusDisplay;
|
|
6200
6630
|
}());
|
|
6201
|
-
StatusDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6202
|
-
StatusDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6203
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6631
|
+
StatusDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: StatusDisplay, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6632
|
+
StatusDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0__namespace, template: "\n <p matTooltip=\"Status\">\n <mat-progress-spinner *ngIf=\"statusWaiting\" color=\"black\" mode=\"indeterminate\" [diameter]=\"30\" [strokeWidth]=\"5\"></mat-progress-spinner><mat-icon *ngIf=\"statusAlertType==='error'\" style=\"color:red\">report_problem</mat-icon>\n {{statusMsg}}\n </p>\n ", isInline: true, styles: [":host {\n flex: 1;\n /* align-self: flex-start; */\n display: inline;\n text-align: left;\n font-size: smaller;\n }", "\n p {\n white-space:nowrap;\n display: inline-block;\n }\n ", "\n mat-progress-spinner {\n color: black;\n display: inline-block;\n }\n ", "\n span {\n color: red;\n }\n "], components: [{ type: i1__namespace$2.MatProgressSpinner, selector: "mat-progress-spinner", inputs: ["color", "mode", "diameter", "strokeWidth", "value"], exportAs: ["matProgressSpinner"] }, { type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
6633
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: StatusDisplay, decorators: [{
|
|
6204
6634
|
type: i0.Component,
|
|
6205
6635
|
args: [{
|
|
6206
6636
|
selector: 'app-sprstatusdisplay',
|
|
@@ -6274,9 +6704,9 @@
|
|
|
6274
6704
|
});
|
|
6275
6705
|
return UploadStatus;
|
|
6276
6706
|
}());
|
|
6277
|
-
UploadStatus.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6278
|
-
UploadStatus.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6279
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6707
|
+
UploadStatus.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: UploadStatus, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6708
|
+
UploadStatus.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: UploadStatus, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0__namespace, template: "\n <mat-progress-spinner [mode]=\"spinnerMode\" [color]=\"status\" [diameter]=\"30\" [strokeWidth]=\"5\" [value]=\"_value\" [matTooltip]=\"toolTipText\"></mat-progress-spinner>\n ", isInline: true, styles: [":host {\n flex: 1;\n /* align-self: flex-start; */\n /*display: inline; */\n text-align: left;\n }", "mat-progress-spinner{\n display: inline-block;\n }"], components: [{ type: i1__namespace$2.MatProgressSpinner, selector: "mat-progress-spinner", inputs: ["color", "mode", "diameter", "strokeWidth", "value"], exportAs: ["matProgressSpinner"] }], directives: [{ type: i3__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
6709
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: UploadStatus, decorators: [{
|
|
6280
6710
|
type: i0.Component,
|
|
6281
6711
|
args: [{
|
|
6282
6712
|
selector: 'app-uploadstatus',
|
|
@@ -6296,9 +6726,9 @@
|
|
|
6296
6726
|
}
|
|
6297
6727
|
return ProgressDisplay;
|
|
6298
6728
|
}());
|
|
6299
|
-
ProgressDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6300
|
-
ProgressDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6301
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6729
|
+
ProgressDisplay.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ProgressDisplay, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6730
|
+
ProgressDisplay.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: ProgressDisplay, selector: "app-sprprogressdisplay", ngImport: i0__namespace, template: "\n <p>{{progressMsg}}</p>\n ", isInline: true, styles: [":host {\n flex: 1;\n /* align-self: flex-start; */\n /*display: inline; */\n width: 100%;\n text-align: left;\n }"] });
|
|
6731
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ProgressDisplay, decorators: [{
|
|
6302
6732
|
type: i0.Component,
|
|
6303
6733
|
args: [{
|
|
6304
6734
|
selector: 'app-sprprogressdisplay',
|
|
@@ -6391,9 +6821,9 @@
|
|
|
6391
6821
|
};
|
|
6392
6822
|
return TransportPanel;
|
|
6393
6823
|
}());
|
|
6394
|
-
TransportPanel.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6395
|
-
TransportPanel.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6396
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6824
|
+
TransportPanel.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: TransportPanel, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6825
|
+
TransportPanel.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled" }, ngImport: i0__namespace, template: "\n <button id=\"bwdBtn\" *ngIf=\"navigationEnabled\" (click)=\"actions.bwdAction.perform()\" [disabled]=\"bwdDisabled()\"\n mat-raised-button>\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button (click)=\"startStopNextPerform()\" [disabled]=\"startDisabled() && stopDisabled() && nextDisabled()\" mat-raised-button>\n <mat-icon [style.color]=\"startStopNextIconColor()\">{{startStopNextIconName()}}</mat-icon><mat-icon *ngIf=\"!nextDisabled()\" [style.color]=\"nextDisabled() ? 'grey' : 'black'\">chevron_right</mat-icon>\n <span fxShow.xs=\"false\">{{startStopNextName()}}</span>\n </button>\n <button (click)=\"actions.pauseAction.perform()\" [disabled]=\"pauseDisabled()\" mat-raised-button>\n <mat-icon>pause</mat-icon>\n <span fxShow.xs=\"false\">Pause</span>\n </button>\n <button id=\"fwdNextBtn\" *ngIf=\"navigationEnabled\" fxHide.xs (click)=\"actions.fwdNextAction.perform()\" [disabled]=\"fwdNextDisabled()\" mat-raised-button>\n <mat-icon>redo</mat-icon>\n </button>\n <button id=\"fwdBtn\" *ngIf=\"navigationEnabled\" (click)=\"actions.fwdAction.perform()\" [disabled]=\"fwdDisabled()\" mat-raised-button>\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n ", isInline: true, styles: [":host {\n flex: 20;\n align-self: center;\n width: 100%;\n text-align: center;\n align-content: center;\n margin: 0;\n }", "\n div {\n display: inline;\n flex: 0;\n }"], components: [{ type: i3__namespace$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6__namespace.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }] });
|
|
6826
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: TransportPanel, decorators: [{
|
|
6397
6827
|
type: i0.Component,
|
|
6398
6828
|
args: [{
|
|
6399
6829
|
selector: 'app-sprtransport',
|
|
@@ -6431,9 +6861,9 @@
|
|
|
6431
6861
|
});
|
|
6432
6862
|
return ControlPanel;
|
|
6433
6863
|
}());
|
|
6434
|
-
ControlPanel.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6435
|
-
ControlPanel.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6436
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6864
|
+
ControlPanel.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ControlPanel, deps: [{ token: i1__namespace$3.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6865
|
+
ControlPanel.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: ControlPanel, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], ngImport: i0__namespace, template: "\n <app-sprstatusdisplay fxHide.xs [statusMsg]=\"statusMsg\" [statusAlertType]=\"statusAlertType\" [statusWaiting]=\"statusWaiting\"\n class=\"hidden-xs\"></app-sprstatusdisplay>\n\n <app-sprtransport [readonly]=\"readonly\" [actions]=\"transportActions\" [navigationEnabled]=\"navigationEnabled\"></app-sprtransport>\n\n <app-uploadstatus fxHide.xs *ngIf=\"enableUploadRecordings\" [value]=\"uploadProgress\"\n [status]=\"uploadStatus\" [awaitNewUpload]=\"processing\"></app-uploadstatus>\n <mat-icon fxHide.xs [matTooltip]=\"readyStateToolTip\">{{hourGlassIconName}}</mat-icon>\n ", isInline: true, styles: [":host {\n flex: 0; /* only required vertical space */\n /* width: 100%; */ /* available horizontal sace */\n /* display: inline; */\n display: flex; /* Horizontal flex container: Bottom transport panel, above prompting panel */\n flex-direction: row;\n align-content: center;\n align-items: center;\n margin: 0;\n padding: 20px;\n min-height: min-content; /* important */\n }", "\n div {\n flex: 0;\n }\n "], components: [{ type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled"] }, { type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6__namespace.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
6866
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ControlPanel, decorators: [{
|
|
6437
6867
|
type: i0.Component,
|
|
6438
6868
|
args: [{
|
|
6439
6869
|
selector: 'app-sprcontrolpanel',
|
|
@@ -6482,9 +6912,9 @@
|
|
|
6482
6912
|
};
|
|
6483
6913
|
return SessionFinishedDialog;
|
|
6484
6914
|
}());
|
|
6485
|
-
SessionFinishedDialog.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6486
|
-
SessionFinishedDialog.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6487
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6915
|
+
SessionFinishedDialog.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SessionFinishedDialog, deps: [{ token: i1__namespace$3.MatDialogRef }, { token: i1$3.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6916
|
+
SessionFinishedDialog.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: SessionFinishedDialog, selector: "spr-session-finished-dialog", ngImport: i0__namespace, template: "<h1 mat-dialog-title><mat-icon [style.color]=\"'green'\">done_all</mat-icon> Session finished</h1>\n <div mat-dialog-content>\n\n <p>Thank you! The recording session is complete.</p>\n\n </div>\n <div mat-dialog-actions>\n <button mat-button (click)=\"closeDialog()\">OK</button>\n </div>\n ", isInline: true, components: [{ type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3__namespace$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1__namespace$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1__namespace$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
6917
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SessionFinishedDialog, decorators: [{
|
|
6488
6918
|
type: i0.Component,
|
|
6489
6919
|
args: [{
|
|
6490
6920
|
selector: 'spr-session-finished-dialog',
|
|
@@ -6507,9 +6937,9 @@
|
|
|
6507
6937
|
};
|
|
6508
6938
|
return MessageDialog;
|
|
6509
6939
|
}());
|
|
6510
|
-
MessageDialog.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6511
|
-
MessageDialog.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6512
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
6940
|
+
MessageDialog.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: MessageDialog, deps: [{ token: i1__namespace$3.MatDialogRef }, { token: i1$3.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
6941
|
+
MessageDialog.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: MessageDialog, selector: "msg-dialog", ngImport: i0__namespace, template: "<h1 mat-dialog-title><mat-icon *ngIf=\"data.type==='error'\" [style.color]=\"'red'\">error</mat-icon>\n <mat-icon *ngIf=\"data.type==='warning'\" [style.color]=\"'yellow'\">warning</mat-icon>{{data.title}}</h1>\n <div mat-dialog-content>\n\n <p>{{data.msg}}</p>\n <p>{{data.advice}}</p>\n\n </div>\n <div mat-dialog-actions>\n <button mat-button (click)=\"closeDialog()\">OK</button>\n </div>\n ", isInline: true, components: [{ type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3__namespace$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1__namespace$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1__namespace$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
6942
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: MessageDialog, decorators: [{
|
|
6513
6943
|
type: i0.Component,
|
|
6514
6944
|
args: [{
|
|
6515
6945
|
selector: 'msg-dialog',
|
|
@@ -6707,9 +7137,9 @@
|
|
|
6707
7137
|
return RecordingService;
|
|
6708
7138
|
}());
|
|
6709
7139
|
RecordingService.REC_API_CTX = 'recfile';
|
|
6710
|
-
RecordingService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6711
|
-
RecordingService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
6712
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
7140
|
+
RecordingService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingService, deps: [{ token: i1__namespace.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
7141
|
+
RecordingService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingService });
|
|
7142
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingService, decorators: [{
|
|
6713
7143
|
type: i0.Injectable
|
|
6714
7144
|
}], ctorParameters: function () {
|
|
6715
7145
|
return [{ type: i1__namespace.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
@@ -6728,9 +7158,9 @@
|
|
|
6728
7158
|
}
|
|
6729
7159
|
return SpeechRecorderUploader;
|
|
6730
7160
|
}(Uploader));
|
|
6731
|
-
SpeechRecorderUploader.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6732
|
-
SpeechRecorderUploader.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
6733
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
7161
|
+
SpeechRecorderUploader.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechRecorderUploader, deps: [{ token: i1__namespace.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
7162
|
+
SpeechRecorderUploader.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechRecorderUploader });
|
|
7163
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechRecorderUploader, decorators: [{
|
|
6734
7164
|
type: i0.Injectable
|
|
6735
7165
|
}], ctorParameters: function () {
|
|
6736
7166
|
return [{ type: i1__namespace.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
@@ -6757,9 +7187,9 @@
|
|
|
6757
7187
|
});
|
|
6758
7188
|
return WarningBar;
|
|
6759
7189
|
}());
|
|
6760
|
-
WarningBar.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6761
|
-
WarningBar.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
6762
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
7190
|
+
WarningBar.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: WarningBar, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
7191
|
+
WarningBar.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: WarningBar, selector: "app-warningbar", inputs: { warningText: "warningText", show: "show" }, providers: [SessionService], ngImport: i0__namespace, template: "\n <div [class]=\"displayClass\">{{warningText}}</div>\n\n ", isInline: true, styles: [":host {\n\n flex: 0 0 content;\n background: orange;\n\n }", "\n .off {\n display: none;\n }\n ", "\n .on {\n padding: 2px;\n display: inline-block;\n width: 100%;\n font-weight: bold;\n font-size: larger;\n text-align: center;\n }\n "] });
|
|
7192
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: WarningBar, decorators: [{
|
|
6763
7193
|
type: i0.Component,
|
|
6764
7194
|
args: [{
|
|
6765
7195
|
selector: 'app-warningbar',
|
|
@@ -6773,6 +7203,7 @@
|
|
|
6773
7203
|
type: i0.Input
|
|
6774
7204
|
}] } });
|
|
6775
7205
|
|
|
7206
|
+
var FORCE_REQUEST_AUDIO_PERMISSIONS = false;
|
|
6776
7207
|
var RECFILE_API_CTX = 'recfile';
|
|
6777
7208
|
var MAX_RECORDING_TIME_MS = 1000 * 60 * 60 * 60; // 1 hour
|
|
6778
7209
|
var DEFAULT_PRE_REC_DELAY = 1000;
|
|
@@ -6824,6 +7255,9 @@
|
|
|
6824
7255
|
this.selCaptureDeviceId = null;
|
|
6825
7256
|
this.levelMeasure = new LevelMeasure();
|
|
6826
7257
|
this.streamLevelMeasure = new StreamLevelMeasure();
|
|
7258
|
+
this.userAgent = UserAgentBuilder.userAgent();
|
|
7259
|
+
console.debug("Detected platform: " + this.userAgent.detectedPlatform);
|
|
7260
|
+
console.debug("Detected browser: " + this.userAgent.detectedBrowser);
|
|
6827
7261
|
if (this.config && this.config.enableUploadRecordings !== undefined) {
|
|
6828
7262
|
this.enableUploadRecordings = this.config.enableUploadRecordings;
|
|
6829
7263
|
}
|
|
@@ -6875,7 +7309,7 @@
|
|
|
6875
7309
|
else {
|
|
6876
7310
|
console.info("No audio context available!");
|
|
6877
7311
|
}
|
|
6878
|
-
if (!navigator.mediaDevices) {
|
|
7312
|
+
if (!context || !navigator.mediaDevices) {
|
|
6879
7313
|
this.status = 8 /* ERROR */;
|
|
6880
7314
|
var errMsg = 'Browser does not support Media streams!';
|
|
6881
7315
|
this.statusMsg = 'ERROR: ' + errMsg;
|
|
@@ -7008,6 +7442,13 @@
|
|
|
7008
7442
|
enumerable: false,
|
|
7009
7443
|
configurable: true
|
|
7010
7444
|
});
|
|
7445
|
+
Object.defineProperty(SessionManager.prototype, "autoGainControlConfigs", {
|
|
7446
|
+
set: function (autoGainControlConfigs) {
|
|
7447
|
+
this._autoGainControlConfigs = autoGainControlConfigs;
|
|
7448
|
+
},
|
|
7449
|
+
enumerable: false,
|
|
7450
|
+
configurable: true
|
|
7451
|
+
});
|
|
7011
7452
|
SessionManager.prototype.update = function (e) {
|
|
7012
7453
|
if (e.type == exports.EventType.STARTED) {
|
|
7013
7454
|
this.playStartAction.disabled = true;
|
|
@@ -7090,7 +7531,7 @@
|
|
|
7090
7531
|
else {
|
|
7091
7532
|
console.log("Open session with default audio device for " + this._channelCount + " channels");
|
|
7092
7533
|
}
|
|
7093
|
-
this.ac.open(this._channelCount, this._selectedDeviceId);
|
|
7534
|
+
this.ac.open(this._channelCount, this._selectedDeviceId, this._autoGainControlConfigs);
|
|
7094
7535
|
}
|
|
7095
7536
|
else {
|
|
7096
7537
|
this.ac.start();
|
|
@@ -7342,9 +7783,22 @@
|
|
|
7342
7783
|
this.sessionService.patchSessionObserver(this._session, body).subscribe();
|
|
7343
7784
|
}
|
|
7344
7785
|
}
|
|
7786
|
+
// Check browser compatibility
|
|
7787
|
+
if (this.userAgent.detectedBrowser === Browser$1.Safari && this._channelCount > 1) {
|
|
7788
|
+
var eMsg = "Error: Safari browser does not support stereo recordings.";
|
|
7789
|
+
console.error(eMsg);
|
|
7790
|
+
this.dialog.open(MessageDialog, {
|
|
7791
|
+
data: {
|
|
7792
|
+
type: 'error',
|
|
7793
|
+
title: 'Browser not supported',
|
|
7794
|
+
msg: eMsg,
|
|
7795
|
+
advice: "Please use a supported browser, e.g. Mozilla Firefox."
|
|
7796
|
+
}
|
|
7797
|
+
});
|
|
7798
|
+
}
|
|
7345
7799
|
//console.log("Session ID: "+this._session.session+ " status: "+this._session.status)
|
|
7346
7800
|
this._selectedDeviceId = undefined;
|
|
7347
|
-
if (!this.readonly && this.ac) {
|
|
7801
|
+
if (!this.readonly && this.ac && (FORCE_REQUEST_AUDIO_PERMISSIONS || (this._audioDevices && this._audioDevices.length > 0))) {
|
|
7348
7802
|
this.statusMsg = 'Requesting audio permissions...';
|
|
7349
7803
|
this.statusAlertType = 'info';
|
|
7350
7804
|
this.ac.deviceInfos(function (mdis) {
|
|
@@ -7461,6 +7915,7 @@
|
|
|
7461
7915
|
}
|
|
7462
7916
|
});
|
|
7463
7917
|
}
|
|
7918
|
+
// Safari does not list playback devices
|
|
7464
7919
|
if (!audioPlayDeviceAvail) {
|
|
7465
7920
|
// Firefox does not enumerate audiooutput devices
|
|
7466
7921
|
// Do not show this warning, because it would always appear on Firefox
|
|
@@ -7468,7 +7923,8 @@
|
|
|
7468
7923
|
// It is already implemneted but kept behind a preference setting https://bugzilla.mozilla.org/show_bug.cgi?id=1152401
|
|
7469
7924
|
// Output devices are listed if about:config media.setsinkid.enabled=true
|
|
7470
7925
|
// but default setting is false
|
|
7471
|
-
|
|
7926
|
+
// Same problem with Safari
|
|
7927
|
+
if (!(_this.userAgent.detectedBrowser === Browser$1.Safari || _this.userAgent.detectedBrowser === Browser$1.Firefox)) {
|
|
7472
7928
|
// no device found
|
|
7473
7929
|
_this.statusMsg = 'WARNING: No audio playback device available!';
|
|
7474
7930
|
_this.statusAlertType = 'warn';
|
|
@@ -7878,14 +8334,14 @@
|
|
|
7878
8334
|
};
|
|
7879
8335
|
return SessionManager;
|
|
7880
8336
|
}());
|
|
7881
|
-
SessionManager.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
7882
|
-
SessionManager.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
7883
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
8337
|
+
SessionManager.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SessionManager, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.Renderer2 }, { token: i1__namespace$3.MatDialog }, { token: SessionService }, { token: RecordingService }, { token: SpeechRecorderUploader }, { token: SPEECHRECORDER_CONFIG }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
8338
|
+
SessionManager.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: SessionManager, selector: "app-sprrecordingsession", inputs: { projectName: "projectName", dataSaved: "dataSaved" }, host: { listeners: { "window:keypress": "onKeyPress($event)", "window:keydown": "onKeyDown($event)" } }, providers: [SessionService], viewQueries: [{ propertyName: "prompting", first: true, predicate: Prompting, descendants: true, static: true }, { propertyName: "liveLevelDisplay", first: true, predicate: LevelBarDisplay, descendants: true, static: true }], ngImport: i0__namespace, template: "\n <app-warningbar [show]=\"isTestSession()\" warningText=\"Test recording only!\"></app-warningbar>\n <app-warningbar [show]=\"isDefaultAudioTestSession()\" warningText=\"This test uses default audio device! Regular sessions may require a particular audio device (microphone)!\"></app-warningbar>\n <app-sprprompting [projectName]=\"projectName\"\n [startStopSignalState]=\"startStopSignalState\" [promptItem]=\"promptItem\" [showPrompt]=\"showPrompt\"\n [items]=\"items\"\n [transportActions]=\"transportActions\"\n [selectedItemIdx]=\"promptIndex\" (onItemSelect)=\"itemSelect($event)\" (onNextItem)=\"nextItem()\" (onPrevItem)=\"prevItem()\"\n [audioSignalCollapsed]=\"audioSignalCollapsed\" [displayAudioClip]=\"displayAudioClip\"\n [playStartAction]=\"controlAudioPlayer?.startAction\"\n [playSelectionAction]=\"controlAudioPlayer?.startSelectionAction\"\n [autoPlayOnSelectToggleAction]=\"controlAudioPlayer?.autoPlayOnSelectToggleAction\"\n [playStopAction]=\"controlAudioPlayer?.stopAction\">\n\n </app-sprprompting>\n <mat-progress-bar [value]=\"progressPercentValue()\" fxShow=\"false\" fxShow.xs=\"true\" ></mat-progress-bar>\n\n <spr-recordingitemdisplay #levelbardisplay\n [playStartAction]=\"controlAudioPlayer?.startAction\"\n [playStopAction]=\"controlAudioPlayer?.stopAction\"\n [streamingMode]=\"isRecording()\"\n [displayLevelInfos]=\"displayLevelInfos\"\n [displayAudioBuffer]=\"displayAudioClip?.buffer\"\n [agc]=\"this.ac?.agcStatus\"\n [audioSignalCollapsed]=\"audioSignalCollapsed\"\n (onShowRecordingDetails)=\"audioSignalCollapsed=!audioSignalCollapsed\"\n (onDownloadRecording)=\"downloadRecording()\"\n [enableDownload]=\"enableDownloadRecordings\"></spr-recordingitemdisplay>\n <app-sprcontrolpanel [enableUploadRecordings]=\"enableUploadRecordings\" [readonly]=\"readonly\" [currentRecording]=\"displayAudioClip?.buffer\"\n [transportActions]=\"transportActions\" [statusMsg]=\"statusMsg\" [statusWaiting]=\"statusWaiting\"\n [statusAlertType]=\"statusAlertType\" [uploadProgress]=\"uploadProgress\"\n [uploadStatus]=\"uploadStatus\" [ready]=\"dataSaved && !isActive()\" [processing]=\"processingRecording\" [navigationEnabled]=\"items==null || items.length>1\"></app-sprcontrolpanel>\n\n ", isInline: true, styles: [":host {\n flex: 2;\n background: lightgrey;\n display: flex; /* Vertical flex container: Bottom transport panel, above prompting panel */\n flex-direction: column;\n margin: 0;\n padding: 0;\n min-height: 0px;\n\n /* Prevents horizontal scroll bar on swipe right */\n overflow: hidden;\n }"], components: [{ type: WarningBar, selector: "app-warningbar", inputs: ["warningText", "show"] }, { type: Prompting, selector: "app-sprprompting", inputs: ["projectName", "startStopSignalState", "promptItem", "showPrompt", "items", "selectedItemIdx", "transportActions", "enableDownload", "audioSignalCollapsed", "displayAudioClip", "playStartAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "playStopAction"], outputs: ["onItemSelect", "onNextItem", "onPrevItem"] }, { type: i7__namespace.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: LevelBarDisplay, selector: "spr-recordingitemdisplay", inputs: ["streamingMode", "audioSignalCollapsed", "enableDownload", "agc", "playStartAction", "playStopAction", "displayAudioBuffer", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }, { type: ControlPanel, selector: "app-sprcontrolpanel", inputs: ["readonly", "transportActions", "processing", "statusMsg", "statusAlertType", "statusWaiting", "uploadStatus", "uploadProgress", "currentRecording", "enableUploadRecordings", "navigationEnabled", "ready"] }], directives: [{ type: i6__namespace.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }] });
|
|
8339
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SessionManager, decorators: [{
|
|
7884
8340
|
type: i0.Component,
|
|
7885
8341
|
args: [{
|
|
7886
8342
|
selector: 'app-sprrecordingsession',
|
|
7887
8343
|
providers: [SessionService],
|
|
7888
|
-
template: "\n <app-warningbar [show]=\"isTestSession()\" warningText=\"Test recording only!\"></app-warningbar>\n <app-warningbar [show]=\"isDefaultAudioTestSession()\" warningText=\"This test uses default audio device! Regular sessions may require a particular audio device (microphone)!\"></app-warningbar>\n <app-sprprompting [projectName]=\"projectName\"\n [startStopSignalState]=\"startStopSignalState\" [promptItem]=\"promptItem\" [showPrompt]=\"showPrompt\"\n [items]=\"items\"\n [transportActions]=\"transportActions\"\n [selectedItemIdx]=\"promptIndex\" (onItemSelect)=\"itemSelect($event)\" (onNextItem)=\"nextItem()\" (onPrevItem)=\"prevItem()\"\n [audioSignalCollapsed]=\"audioSignalCollapsed\" [displayAudioClip]=\"displayAudioClip\"\n [playStartAction]=\"controlAudioPlayer?.startAction\"\n [playSelectionAction]=\"controlAudioPlayer?.startSelectionAction\"\n [autoPlayOnSelectToggleAction]=\"controlAudioPlayer?.autoPlayOnSelectToggleAction\"\n [playStopAction]=\"controlAudioPlayer?.stopAction\">\n\n </app-sprprompting>\n <mat-progress-bar [value]=\"progressPercentValue()\" fxShow=\"false\" fxShow.xs=\"true\" ></mat-progress-bar>\n\n <spr-recordingitemdisplay #levelbardisplay\n [playStartAction]=\"controlAudioPlayer?.startAction\"\n [playStopAction]=\"controlAudioPlayer?.stopAction\"\n [streamingMode]=\"isRecording()\"\n [displayLevelInfos]=\"displayLevelInfos\"\n [displayAudioBuffer]=\"displayAudioClip?.buffer\"
|
|
8344
|
+
template: "\n <app-warningbar [show]=\"isTestSession()\" warningText=\"Test recording only!\"></app-warningbar>\n <app-warningbar [show]=\"isDefaultAudioTestSession()\" warningText=\"This test uses default audio device! Regular sessions may require a particular audio device (microphone)!\"></app-warningbar>\n <app-sprprompting [projectName]=\"projectName\"\n [startStopSignalState]=\"startStopSignalState\" [promptItem]=\"promptItem\" [showPrompt]=\"showPrompt\"\n [items]=\"items\"\n [transportActions]=\"transportActions\"\n [selectedItemIdx]=\"promptIndex\" (onItemSelect)=\"itemSelect($event)\" (onNextItem)=\"nextItem()\" (onPrevItem)=\"prevItem()\"\n [audioSignalCollapsed]=\"audioSignalCollapsed\" [displayAudioClip]=\"displayAudioClip\"\n [playStartAction]=\"controlAudioPlayer?.startAction\"\n [playSelectionAction]=\"controlAudioPlayer?.startSelectionAction\"\n [autoPlayOnSelectToggleAction]=\"controlAudioPlayer?.autoPlayOnSelectToggleAction\"\n [playStopAction]=\"controlAudioPlayer?.stopAction\">\n\n </app-sprprompting>\n <mat-progress-bar [value]=\"progressPercentValue()\" fxShow=\"false\" fxShow.xs=\"true\" ></mat-progress-bar>\n\n <spr-recordingitemdisplay #levelbardisplay\n [playStartAction]=\"controlAudioPlayer?.startAction\"\n [playStopAction]=\"controlAudioPlayer?.stopAction\"\n [streamingMode]=\"isRecording()\"\n [displayLevelInfos]=\"displayLevelInfos\"\n [displayAudioBuffer]=\"displayAudioClip?.buffer\"\n [agc]=\"this.ac?.agcStatus\"\n [audioSignalCollapsed]=\"audioSignalCollapsed\"\n (onShowRecordingDetails)=\"audioSignalCollapsed=!audioSignalCollapsed\"\n (onDownloadRecording)=\"downloadRecording()\"\n [enableDownload]=\"enableDownloadRecordings\"></spr-recordingitemdisplay>\n <app-sprcontrolpanel [enableUploadRecordings]=\"enableUploadRecordings\" [readonly]=\"readonly\" [currentRecording]=\"displayAudioClip?.buffer\"\n [transportActions]=\"transportActions\" [statusMsg]=\"statusMsg\" [statusWaiting]=\"statusWaiting\"\n [statusAlertType]=\"statusAlertType\" [uploadProgress]=\"uploadProgress\"\n [uploadStatus]=\"uploadStatus\" [ready]=\"dataSaved && !isActive()\" [processing]=\"processingRecording\" [navigationEnabled]=\"items==null || items.length>1\"></app-sprcontrolpanel>\n\n ",
|
|
7889
8345
|
styles: [":host {\n flex: 2;\n background: lightgrey;\n display: flex; /* Vertical flex container: Bottom transport panel, above prompting panel */\n flex-direction: column;\n margin: 0;\n padding: 0;\n min-height: 0px;\n\n /* Prevents horizontal scroll bar on swipe right */\n overflow: hidden;\n }"]
|
|
7890
8346
|
}]
|
|
7891
8347
|
}], ctorParameters: function () {
|
|
@@ -7911,23 +8367,6 @@
|
|
|
7911
8367
|
args: ['window:keydown', ['$event']]
|
|
7912
8368
|
}] } });
|
|
7913
8369
|
|
|
7914
|
-
var ProjectUtil = /** @class */ (function () {
|
|
7915
|
-
function ProjectUtil() {
|
|
7916
|
-
}
|
|
7917
|
-
ProjectUtil.audioChannelCount = function (project) {
|
|
7918
|
-
var chs = ProjectUtil.DEFAULT_AUDIO_CHANNEL_COUNT;
|
|
7919
|
-
if (project.mediaCaptureFormat) {
|
|
7920
|
-
chs = project.mediaCaptureFormat.audioChannelCount;
|
|
7921
|
-
}
|
|
7922
|
-
else if (project.audioFormat) {
|
|
7923
|
-
chs = project.audioFormat.channels;
|
|
7924
|
-
}
|
|
7925
|
-
return chs;
|
|
7926
|
-
};
|
|
7927
|
-
return ProjectUtil;
|
|
7928
|
-
}());
|
|
7929
|
-
ProjectUtil.DEFAULT_AUDIO_CHANNEL_COUNT = 2;
|
|
7930
|
-
|
|
7931
8370
|
/**
|
|
7932
8371
|
* Created by klausj on 17.06.2017.
|
|
7933
8372
|
*/
|
|
@@ -7961,9 +8400,9 @@
|
|
|
7961
8400
|
};
|
|
7962
8401
|
return ScriptService;
|
|
7963
8402
|
}());
|
|
7964
|
-
ScriptService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
7965
|
-
ScriptService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
7966
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
8403
|
+
ScriptService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ScriptService, deps: [{ token: i1__namespace.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
8404
|
+
ScriptService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ScriptService });
|
|
8405
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ScriptService, decorators: [{
|
|
7967
8406
|
type: i0.Injectable
|
|
7968
8407
|
}], ctorParameters: function () {
|
|
7969
8408
|
return [{ type: i1__namespace.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
@@ -8263,6 +8702,7 @@
|
|
|
8263
8702
|
this.sm.audioDevices = project.audioDevices;
|
|
8264
8703
|
chCnt = ProjectUtil.audioChannelCount(project);
|
|
8265
8704
|
console.info("Project requested recording channel count: " + chCnt);
|
|
8705
|
+
this.sm.autoGainControlConfigs = project.autoGainControlConfigs;
|
|
8266
8706
|
}
|
|
8267
8707
|
else {
|
|
8268
8708
|
console.error("Empty project configuration!");
|
|
@@ -8365,9 +8805,9 @@
|
|
|
8365
8805
|
};
|
|
8366
8806
|
return SpeechrecorderngComponent;
|
|
8367
8807
|
}());
|
|
8368
|
-
SpeechrecorderngComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
8369
|
-
SpeechrecorderngComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
8370
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
8808
|
+
SpeechrecorderngComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechrecorderngComponent, deps: [{ token: i1__namespace$1.ActivatedRoute }, { token: i1__namespace$1.Router }, { token: i0__namespace.ChangeDetectorRef }, { token: SessionService }, { token: ProjectService }, { token: ScriptService }, { token: RecordingService }, { token: SpeechRecorderUploader }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
8809
|
+
SpeechrecorderngComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: SpeechrecorderngComponent, selector: "app-speechrecorder", providers: [SessionService], viewQueries: [{ propertyName: "sm", first: true, predicate: SessionManager, descendants: true, static: true }], ngImport: i0__namespace, template: "\n <app-sprrecordingsession [projectName]=\"project?.name\" [dataSaved]=\"dataSaved\"></app-sprrecordingsession>\n ", isInline: true, styles: [":host{\n flex: 2;\n display: flex;\n flex-direction: column;\n min-height:0;\n\n }"], components: [{ type: SessionManager, selector: "app-sprrecordingsession", inputs: ["projectName", "dataSaved"] }] });
|
|
8810
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechrecorderngComponent, decorators: [{
|
|
8371
8811
|
type: i0.Component,
|
|
8372
8812
|
args: [{
|
|
8373
8813
|
selector: 'app-speechrecorder',
|
|
@@ -8385,9 +8825,9 @@
|
|
|
8385
8825
|
}
|
|
8386
8826
|
return ScrollPaneHorizontal;
|
|
8387
8827
|
}());
|
|
8388
|
-
ScrollPaneHorizontal.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
8389
|
-
ScrollPaneHorizontal.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
8390
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
8828
|
+
ScrollPaneHorizontal.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ScrollPaneHorizontal, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
8829
|
+
ScrollPaneHorizontal.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: ScrollPaneHorizontal, selector: "scroll-pane-horizontal", ngImport: i0__namespace, template: '', isInline: true, styles: [":host {\n width: 100%;\n background: darkgray;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n overflow-x: scroll;\n overflow-y: auto;\n }"] });
|
|
8830
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: ScrollPaneHorizontal, decorators: [{
|
|
8391
8831
|
type: i0.Component,
|
|
8392
8832
|
args: [{
|
|
8393
8833
|
selector: 'scroll-pane-horizontal',
|
|
@@ -8614,9 +9054,9 @@
|
|
|
8614
9054
|
};
|
|
8615
9055
|
return AudioDisplayPlayer;
|
|
8616
9056
|
}());
|
|
8617
|
-
AudioDisplayPlayer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
8618
|
-
AudioDisplayPlayer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
8619
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
9057
|
+
AudioDisplayPlayer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplayPlayer, deps: [{ token: i1__namespace$1.ActivatedRoute }, { token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
9058
|
+
AudioDisplayPlayer.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: AudioDisplayPlayer, selector: "app-audiodisplayplayer", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0__namespace, template: "\n\n <audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>\n\n <audio-display-control [audioClip]=\"audioClip\"\n [playStartAction]=\"playStartAction\"\n [playSelectionAction]=\"playSelectionAction\"\n [playStopAction]=\"playStopAction\"\n [autoPlayOnSelectToggleAction]=\"ap?.autoPlayOnSelectToggleAction\"\n [zoomInAction]=\"zoomInAction\"\n [zoomOutAction]=\"zoomOutAction\"\n [zoomSelectedAction]=\"zoomSelectedAction\"\n [zoomFitToPanelAction]=\"zoomFitToPanelAction\"></audio-display-control><p>{{status}}\n ", isInline: true, styles: [":host {\n display: flex;\n flex-direction: column;\n position: absolute;\n bottom: 0px;\n height: 100%;\n width: 100%;\n overflow: hidden;\n padding: 20px;\n z-index: 5;\n box-sizing: border-box;\n background-color: rgba(0, 0, 0, 0.75)\n }"], components: [{ type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }] });
|
|
9059
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: AudioDisplayPlayer, decorators: [{
|
|
8620
9060
|
type: i0.Component,
|
|
8621
9061
|
args: [{
|
|
8622
9062
|
selector: 'app-audiodisplayplayer',
|
|
@@ -8889,9 +9329,9 @@
|
|
|
8889
9329
|
return RecordingFileService;
|
|
8890
9330
|
}());
|
|
8891
9331
|
RecordingFileService.RECOFILE_API_CTX = 'recordingfile';
|
|
8892
|
-
RecordingFileService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
8893
|
-
RecordingFileService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
8894
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
9332
|
+
RecordingFileService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileService, deps: [{ token: i1__namespace.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
9333
|
+
RecordingFileService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileService });
|
|
9334
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileService, decorators: [{
|
|
8895
9335
|
type: i0.Injectable
|
|
8896
9336
|
}], ctorParameters: function () {
|
|
8897
9337
|
return [{ type: i1__namespace.HttpClient }, { type: SpeechRecorderConfig, decorators: [{
|
|
@@ -8914,9 +9354,9 @@
|
|
|
8914
9354
|
};
|
|
8915
9355
|
return RecordingFileMetaComponent;
|
|
8916
9356
|
}());
|
|
8917
|
-
RecordingFileMetaComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
8918
|
-
RecordingFileMetaComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
8919
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
9357
|
+
RecordingFileMetaComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileMetaComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
9358
|
+
RecordingFileMetaComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: { sessionId: "sessionId", recordingFile: "recordingFile" }, ngImport: i0__namespace, template: "\n <mat-card>\n <mat-card-title>Recording file ID: {{recordingFile?.recordingFileId}}</mat-card-title>\n <mat-card-content>\n <table>\n <tr>\n <td>Itemcode:</td>\n <td>{{recordingFile?.recording?.itemcode}}</td>\n </tr>\n <tr *ngIf=\"recordingFile?.date\">\n <td>Date:</td>\n <td>{{recordingFile?.date}}</td>\n </tr>\n <tr>\n <td>Prompt:</td>\n <td>{{recordingAsPlainText()}}</td>\n </tr>\n \n <tr *ngIf=\"sessionId\">\n <td>Session:</td>\n <td>{{sessionId}}</td>\n </tr>\n </table>\n </mat-card-content>\n </mat-card>\n ", isInline: true, components: [{ type: i1__namespace$4.MatCard, selector: "mat-card", exportAs: ["matCard"] }], directives: [{ type: i1__namespace$4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1__namespace$4.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
9359
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileMetaComponent, decorators: [{
|
|
8920
9360
|
type: i0.Component,
|
|
8921
9361
|
args: [{
|
|
8922
9362
|
selector: 'app-recording-file-meta',
|
|
@@ -8947,9 +9387,9 @@
|
|
|
8947
9387
|
};
|
|
8948
9388
|
return RecordingFileNaviComponent;
|
|
8949
9389
|
}());
|
|
8950
|
-
RecordingFileNaviComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
8951
|
-
RecordingFileNaviComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
8952
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
9390
|
+
RecordingFileNaviComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileNaviComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
9391
|
+
RecordingFileNaviComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: RecordingFileNaviComponent, selector: "app-recording-file-navi", inputs: { firstAction: "firstAction", prevAction: "prevAction", nextAction: "nextAction", lastAction: "lastAction", items: "items", itemPos: "itemPos", selectVersion: "selectVersion", versions: "versions", version: "version", naviInfoLoading: "naviInfoLoading" }, ngImport: i0__namespace, template: "\n <div #controlPanel style=\"display:flex;flex-direction: row;\">\n <div #navi style=\"flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap\">\n <fieldset>\n <legend>Versions</legend>\n <mat-progress-spinner *ngIf=\"naviInfoLoading\" mode=\"indeterminate\" [diameter]=\"15\"></mat-progress-spinner>\n <select *ngIf=\"!naviInfoLoading\" [disabled]=\"versions==null || versions.length==1\" (change)=\"selectVersionChange($event)\">\n <option *ngFor=\"let v of versions; let i = index\" [selected]=\"v===version\" value=\"{{v}}\">{{v}}<span *ngIf=\"i==0\"> (latest)</span></option>\n </select>\n </fieldset>\n <fieldset>\n <legend>Navigate</legend>\n <mat-progress-spinner *ngIf=\"naviInfoLoading\" mode=\"indeterminate\" [diameter]=\"15\"></mat-progress-spinner>\n <div *ngIf=\"!naviInfoLoading\" style=\"flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap\">\n <button (click)=\"firstAction?.perform()\" [disabled]=\"!firstAction || firstAction?.disabled\" matTooltip=\"First recording file\">\n <mat-icon>first_page</mat-icon>\n </button>\n <button (click)=\"prevAction?.perform()\" [disabled]=\"!prevAction || prevAction?.disabled\" matTooltip=\"Previous recording file\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button (click)=\"nextAction?.perform()\" [disabled]=\"!nextAction || nextAction?.disabled\" matTooltip=\"Next recording file\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n <button (click)=\"lastAction?.perform()\" [disabled]=\"!lastAction || lastAction?.disabled\" matTooltip=\"Last recording file\">\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n <p *ngIf=\"items && itemPos!==null && itemPos!==undefined\">Item {{itemPos+1}} of {{items}}</p>\n <p>(List ordered by date)</p>\n </fieldset>\n </div>\n </div>\n ", isInline: true, styles: [":host {\n flex: 0;\n\n }"], components: [{ type: i1__namespace$2.MatProgressSpinner, selector: "mat-progress-spinner", inputs: ["color", "mode", "diameter", "strokeWidth", "value"], exportAs: ["matProgressSpinner"] }, { type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
9392
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileNaviComponent, decorators: [{
|
|
8953
9393
|
type: i0.Component,
|
|
8954
9394
|
args: [{
|
|
8955
9395
|
selector: 'app-recording-file-navi',
|
|
@@ -9308,9 +9748,9 @@
|
|
|
9308
9748
|
};
|
|
9309
9749
|
return RecordingFileViewComponent;
|
|
9310
9750
|
}(AudioDisplayPlayer));
|
|
9311
|
-
RecordingFileViewComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
9312
|
-
RecordingFileViewComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
9313
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
9751
|
+
RecordingFileViewComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileViewComponent, deps: [{ token: RecordingFileService }, { token: RecordingService }, { token: SessionService }, { token: i1__namespace$1.Router }, { token: i1__namespace$1.ActivatedRoute }, { token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ElementRef }, { token: i1__namespace$3.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
9752
|
+
RecordingFileViewComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: RecordingFileViewComponent, selector: "app-audiodisplayplayer", viewQueries: [{ propertyName: "ac", first: true, predicate: AudioDisplayScrollPane, descendants: true }], usesInheritance: true, ngImport: i0__namespace, template: "\n\n <audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>\n <div class=\"ctrlview\">\n <app-recording-file-meta [sessionId]=\"sessionId\" [recordingFile]=\"recordingFile\"></app-recording-file-meta>\n\n <audio-display-control [audioClip]=\"audioClip\"\n [playStartAction]=\"playStartAction\"\n [playSelectionAction]=\"playSelectionAction\"\n [playStopAction]=\"playStopAction\"\n [autoPlayOnSelectToggleAction]=\"ap?.autoPlayOnSelectToggleAction\"\n [zoomInAction]=\"zoomInAction\"\n [zoomOutAction]=\"zoomOutAction\"\n [zoomSelectedAction]=\"zoomSelectedAction\"\n [zoomFitToPanelAction]=\"zoomFitToPanelAction\"></audio-display-control>\n <app-recording-file-navi [items]=\"availRecFiles?.length\" [itemPos]=\"posInList\" [version]=\"recordingFile?recordingFile.version:null\" [versions]=\"versions\" [firstAction]=\"firstAction\" [prevAction]=\"prevAction\" [nextAction]=\"nextAction\" [lastAction]=\"lastAction\" [selectVersion]=\"toVersionAction\" [naviInfoLoading]=\"naviInfoLoading\"></app-recording-file-navi>\n </div>\n ", isInline: true, styles: [":host {\n flex: 2;\n display: flex;\n flex-direction: column;\n min-height:0;\n overflow: hidden;\n padding: 20px;\n z-index: 5;\n box-sizing: border-box;\n background-color: white;\n }", "\n .ctrlview{\n display: flex;\n flex-direction: row;\n\n }\n ", "\n audio-display-control{\n\n flex: 3;\n }\n "], components: [{ type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: ["sessionId", "recordingFile"] }, { type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }, { type: RecordingFileNaviComponent, selector: "app-recording-file-navi", inputs: ["firstAction", "prevAction", "nextAction", "lastAction", "items", "itemPos", "selectVersion", "versions", "version", "naviInfoLoading"] }] });
|
|
9753
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileViewComponent, decorators: [{
|
|
9314
9754
|
type: i0.Component,
|
|
9315
9755
|
args: [{
|
|
9316
9756
|
selector: 'app-audiodisplayplayer',
|
|
@@ -9404,9 +9844,9 @@
|
|
|
9404
9844
|
};
|
|
9405
9845
|
return RecordingFileUI;
|
|
9406
9846
|
}(RecordingFileViewComponent));
|
|
9407
|
-
RecordingFileUI.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
9408
|
-
RecordingFileUI.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
9409
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
9847
|
+
RecordingFileUI.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileUI, deps: [{ token: RecordingFileService }, { token: RecordingService }, { token: SessionService }, { token: i1__namespace$1.Router }, { token: i1__namespace$1.ActivatedRoute }, { token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ElementRef }, { token: i1__namespace$3.MatDialog }, { token: i6__namespace$1.MatSnackBar }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
9848
|
+
RecordingFileUI.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: RecordingFileUI, selector: "app-audiodisplayplayer", usesInheritance: true, ngImport: i0__namespace, template: "\n <h1>Recording file editing</h1>\n <p>On export or delivery the editing selection of the recording file is cut out. If no editing selection is applied the original file is exported.</p>\n\n <audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>\n <div class=\"ctrlview\">\n <app-recording-file-meta [sessionId]=\"sessionId\" [recordingFile]=\"recordingFile\"></app-recording-file-meta>\n <audio-display-control [audioClip]=\"audioClip\"\n [playStartAction]=\"playStartAction\"\n [playSelectionAction]=\"playSelectionAction\"\n [playStopAction]=\"playStopAction\"\n [autoPlayOnSelectToggleAction]=\"ap?.autoPlayOnSelectToggleAction\"\n [zoomInAction]=\"zoomInAction\"\n [zoomOutAction]=\"zoomOutAction\"\n [zoomSelectedAction]=\"zoomSelectedAction\"\n [zoomFitToPanelAction]=\"zoomFitToPanelAction\"></audio-display-control>\n <app-recording-file-navi [items]=\"availRecFiles?.length\" [itemPos]=\"posInList\" [version]=\"recordingFile?recordingFile.version:null\" [versions]=\"versions\" [firstAction]=\"firstAction\" [prevAction]=\"prevAction\" [nextAction]=\"nextAction\" [lastAction]=\"lastAction\" [selectVersion]=\"toVersionAction\" [naviInfoLoading]=\"naviInfoLoading\"></app-recording-file-navi>\n </div>\n\n <button mat-raised-button color=\"accent\" (click)=\"applySelection()\" [disabled]=\"editSaved\">{{this.applyButtonText()}}</button>\n ", isInline: true, styles: [":host {\n flex: 2;\n display: flex;\n flex-direction: column;\n min-height:0;\n overflow: hidden;\n padding: 20px;\n z-index: 5;\n box-sizing: border-box;\n background-color: white;\n }", "\n .ctrlview{\n display: flex;\n flex-direction: row;\n }\n ", "\n audio-display-control{\n\n flex: 3;\n }\n "], components: [{ type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: ["sessionId", "recordingFile"] }, { type: AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }, { type: RecordingFileNaviComponent, selector: "app-recording-file-navi", inputs: ["firstAction", "prevAction", "nextAction", "lastAction", "items", "itemPos", "selectVersion", "versions", "version", "naviInfoLoading"] }, { type: i3__namespace$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
|
|
9849
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: RecordingFileUI, decorators: [{
|
|
9410
9850
|
type: i0.Component,
|
|
9411
9851
|
args: [{
|
|
9412
9852
|
selector: 'app-audiodisplayplayer',
|
|
@@ -9447,11 +9887,11 @@
|
|
|
9447
9887
|
};
|
|
9448
9888
|
return SpeechrecorderngModule;
|
|
9449
9889
|
}());
|
|
9450
|
-
SpeechrecorderngModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
9451
|
-
SpeechrecorderngModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.
|
|
9890
|
+
SpeechrecorderngModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechrecorderngModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
|
9891
|
+
SpeechrecorderngModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechrecorderngModule, declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
9452
9892
|
ProgressDisplay, LevelBarDisplay, UploadStatus, TransportPanel, ControlPanel, WarningBar, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent], imports: [i1__namespace$1.RouterModule, flexLayout.FlexLayoutModule, i4.CommonModule, i2.MatIconModule, i3$1.MatButtonModule, i1$3.MatDialogModule, i7.MatProgressBarModule, i1$2.MatProgressSpinnerModule, i3.MatTooltipModule, i1.HttpClientModule, i2$1.MatCheckboxModule, i1$4.MatCardModule, divider.MatDividerModule, gridList.MatGridListModule, table.MatTableModule, input.MatInputModule, select.MatSelectModule, i6$1.MatSnackBarModule], exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar] });
|
|
9453
|
-
SpeechrecorderngModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.
|
|
9454
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
9893
|
+
SpeechrecorderngModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechrecorderngModule, providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader], imports: [[i1$1.RouterModule.forChild(SPR_ROUTES), flexLayout.FlexLayoutModule, i4.CommonModule, i2.MatIconModule, i3$1.MatButtonModule, i1$3.MatDialogModule, i7.MatProgressBarModule, i1$2.MatProgressSpinnerModule, i3.MatTooltipModule, i1.HttpClientModule, i2$1.MatCheckboxModule, i1$4.MatCardModule, divider.MatDividerModule, gridList.MatGridListModule, table.MatTableModule, input.MatInputModule, select.MatSelectModule, i6$1.MatSnackBarModule]] });
|
|
9894
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0__namespace, type: SpeechrecorderngModule, decorators: [{
|
|
9455
9895
|
type: i0.NgModule,
|
|
9456
9896
|
args: [{
|
|
9457
9897
|
declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
@@ -9465,7 +9905,7 @@
|
|
|
9465
9905
|
}]
|
|
9466
9906
|
}] });
|
|
9467
9907
|
|
|
9468
|
-
var VERSION = '2.
|
|
9908
|
+
var VERSION = '2.19.0';
|
|
9469
9909
|
|
|
9470
9910
|
/*
|
|
9471
9911
|
* Public API Surface of speechrecorderng
|