{"version":3,"sources":["webpack:///./src/views/NewLoadingSpinner.vue?4be3","webpack:///./src/views/NewLoadingSpinner.vue?5079","webpack:///src/views/NewLoadingSpinner.vue","webpack:///./src/views/NewLoadingSpinner.vue","webpack:///./src/views/Loading.vue?014c","webpack:///./src/views/Loading.vue?f994","webpack:///src/views/Loading.vue","webpack:///./src/views/Loading.vue","webpack:///./src/views/campaign-manager/media-planner/MPVoice/Index.vue?1077","webpack:///src/views/campaign-manager/media-planner/MPVoice/CustomRecorder.vue","webpack:///./src/views/campaign-manager/media-planner/MPVoice/CustomRecorder.vue?60aa","webpack:///./src/views/campaign-manager/media-planner/MPVoice/CustomRecorder.vue","webpack:///./src/views/campaign-manager/media-planner/MPVoice/CustomRecorder.vue?33a3","webpack:///./src/views/campaign-manager/media-planner/MPVoice/Index.vue?9a20","webpack:///src/views/campaign-manager/media-planner/MPVoice/Index.vue","webpack:///./src/views/campaign-manager/media-planner/MPVoice/Index.vue","webpack:///./src/views/NewLoadingSpinner.vue?3ac0","webpack:///./src/views/campaign-manager/media-planner/MPVoice/CustomRecorder.vue?5450"],"names":["data","component","_vm","this","$createElement","_self","_c","_m","_h","staticClass","staticRenderFns","components","BSpinner","NewLoadingSpinner","props","loadingStatus","type","String","default","label","staticStyle","_e","Loading","BButton","BListGroup","BListGroupItem","apiUrl","isRecording","isPlaying","isCreated","isLoading","mediaRecorder","audioChunks","supportedMimeTypes","mimeType","maxRecordTime","recordTimer","timerProgress","lastApiResponse","hasApiResponse","isReplaying","idToken","answerText","session_id","counter","finalForm","userText","isReadyText","isRecordText","isPausedText","isCreatedText","dialogs","computed","currentStatusText","ringStyle","color","getButtonIcon","created","setSupportedMimeType","methods","MediaRecorder","isTypeSupported","stopRecording","startRecording","stream","navigator","mediaDevices","getUserMedia","audio","ondataavailable","event","push","start","setInterval","clearInterval","stop","onstop","audioBlob","Blob","audioBase64","blobToBase64","postAudio","blob","Promise","resolve","reader","FileReader","readAsDataURL","onloadend","base64String","result","split","response","$http","post","voice","task","playResponse","answerVoice","final_form","user_speech_text","createPlan","error","playAudio","$refs","audioPlayer","pause","currentTime","audioSrc","src","load","play","catch","e","onended","RESET","imediaRecorder","iaudioChunks","mediaFormData","then","$emit","setTimeout","briefId","plansTable","brief_id","$router","class","attrs","on","toggleRecording","_v","_s","replayAudio","ref","_l","dialog","index","key","you","ai","name","CustomRecorder"],"mappings":"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","file":"js/chunk-ec011278.63b4eece.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hollow-dots-spinner\"},[_c('div',{staticClass:\"dot\"}),_c('div',{staticClass:\"dot\"}),_c('div',{staticClass:\"dot\"})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLoadingSpinner.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLoadingSpinner.vue?vue&type=script&lang=js\"","<template>\n <div class=\"hollow-dots-spinner\">\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n </div>\n</template>\n\n<script>\nexport default {\n data() {\n return {\n };\n },\n};\n</script>\n\n<style scoped>\n.hollow-dots-spinner, .hollow-dots-spinner * {\n box-sizing: border-box;\n}\n\n.hollow-dots-spinner {\n height: 15px;\n width: calc(30px * 3);\n}\n\n.hollow-dots-spinner .dot {\n width: 15px;\n height: 15px;\n margin: 0 calc(15px / 2);\n border: calc(15px / 5) solid #fff;\n border-radius: 50%;\n float: left;\n transform: scale(0);\n animation: hollow-dots-spinner-animation 1000ms ease infinite 0ms;\n}\n\n.hollow-dots-spinner .dot:nth-child(1) {\n animation-delay: calc(300ms * 1);\n}\n\n.hollow-dots-spinner .dot:nth-child(2) {\n animation-delay: calc(300ms * 2);\n}\n\n.hollow-dots-spinner .dot:nth-child(3) {\n animation-delay: calc(300ms * 3);\n}\n\n@keyframes hollow-dots-spinner-animation {\n 50% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n\n</style>\n\n","import { render, staticRenderFns } from \"./NewLoadingSpinner.vue?vue&type=template&id=5db0d5ca&scoped=true\"\nimport script from \"./NewLoadingSpinner.vue?vue&type=script&lang=js\"\nexport * from \"./NewLoadingSpinner.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewLoadingSpinner.vue?vue&type=style&index=0&id=5db0d5ca&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5db0d5ca\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"d-flex justify-content-center align-items-center mb-1\",staticStyle:{\"height\":\"100%\",\"min-height\":\"500px\",\"display\":\"flex\"}},[(_vm.loadingStatus === 'loading')?_c('span',{staticStyle:{\"text-align\":\"center\"}},[_c('new-loading-spinner')],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"","<template>\n <div>\n <div\n style=\"height: 100%; min-height: 500px; display: flex\"\n class=\"d-flex justify-content-center align-items-center mb-1\"\n >\n <span\n v-if=\"loadingStatus === 'loading'\"\n style=\"text-align: center\"\n >\n <new-loading-spinner />\n </span>\n </div>\n </div>\n</template>\n\n<script>\nimport { BSpinner } from 'bootstrap-vue'\nimport NewLoadingSpinner from \"@/views/NewLoadingSpinner.vue\";\n\nexport default {\n components: {\n BSpinner,\n NewLoadingSpinner\n },\n props: {\n loadingStatus: {\n type: String,\n default: 'loading',\n },\n label: {\n type: String,\n default: 'Please Wait',\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=77246907\"\nimport script from \"./Loading.vue?vue&type=script&lang=js\"\nexport * from \"./Loading.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('CustomRecorder')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"voice-record-wrapper\">\n <loading v-if=\"isLoading\" />\n <div v-if=\"!isLoading\">\n <b-button\n :disabled=\"isPlaying\"\n variant=\"primary\"\n class=\"btn-icon rounded-circle mb-1\"\n size=\"lg\"\n :class=\"{'pulse-effect': isRecording && getButtonIcon !== 'HeadphonesIcon'}\"\n @click=\"toggleRecording\"\n >\n <feather-icon\n :icon=\"getButtonIcon\"\n size=\"48\"\n />\n </b-button>\n <div class=\"mb-3\">\n <p>\n {{ currentStatusText }}\n </p>\n </div>\n <div>\n <b-button\n variant=\"outline-secondary\"\n class=\"btn-icon\"\n @click=\"RESET\"\n >\n <feather-icon\n icon=\"RefreshCwIcon\"\n />\n </b-button>\n <b-button\n v-if=\"hasApiResponse\"\n :disabled=\"isRecording\"\n variant=\"outline-secondary\"\n class=\"btn-icon ml-1\"\n @click=\"replayAudio\"\n >\n <feather-icon\n icon=\"PlayIcon\"\n />\n </b-button>\n </div>\n </div>\n <audio ref=\"audioPlayer\" />\n <div class=\"dialog-container\">\n <b-list-group class=\"mt-3\">\n <b-list-group-item style=\"width: 1154px;\">\n Adin: Hello User what a nice day for planning. How can I help you with?\n </b-list-group-item>\n <template v-for=\"(dialog, index) in dialogs\">\n <b-list-group-item\n :key=\"`you-${index}`\"\n >\n User: {{ dialog.you }}\n </b-list-group-item>\n <b-list-group-item\n :key=\"`ai-${index}`\"\n >\n Adin: {{ dialog.ai }}\n </b-list-group-item>\n </template>\n </b-list-group>\n </div>\n </div>\n</template>\n<script>\nimport {BButton, BListGroup, BListGroupItem} from 'bootstrap-vue'\nimport Loading from \"@/views/Loading.vue\";\n\nexport default {\n components: {\n Loading,\n BButton,\n BListGroup,\n BListGroupItem\n },\n data() {\n return {\n apiUrl: 'https://cya5yhoali.execute-api.eu-central-1.amazonaws.com/dev/mediaplanner/voicecontrol',\n isRecording: false,\n isPlaying: false,\n isCreated: false,\n isLoading: false,\n mediaRecorder: null,\n audioChunks: [],\n supportedMimeTypes: ['audio/wav'], //'audio/webm', 'audio/ogg', '\n mimeType: '',\n maxRecordTime: 30000,\n recordTimer: null,\n timerProgress: 100,\n lastApiResponse: null, // API'den son gelen ses yanıtını tutar\n hasApiResponse: false, // API'den ses yanıtı alınıp alınmadığını kontrol eder\n isReplaying: false, // Yeniden çalma durumunu izler\n idToken: \"\",\n answerText: null,\n session_id: null,\n counter: null,\n finalForm: {},\n userText: null,\n isReadyText: 'Please click to mic. button to create new media plan.',\n isRecordText: 'Please wait, we ardialogse listening to you.',\n isPausedText: 'Please complete your form.',\n isCreatedText: 'Well done! You created media plan.',\n dialogs: []\n\n }\n },\n computed: {\n currentStatusText() {\n if (this.isRecording) {\n return this.isRecordText;\n } else if (this.isCreated) {\n return this.isCreatedText;\n } else if (this.isPlaying) {\n return this.isPausedText;\n } else {\n return this.isReadyText;\n }\n },\n ringStyle() {\n let color\n if (this.timerProgress > 75) color = 'green'\n else if (this.timerProgress > 50) color = '#cfad04'\n else if (this.timerProgress > 25) color = 'orange'\n else color = 'red'\n return {\n 'background': `conic-gradient(${color} ${this.timerProgress * 3.6}deg, transparent 0deg)`,\n }\n },\n getButtonIcon() {\n if (this.isPlaying) {\n return 'HeadphonesIcon';\n }\n return this.isRecording ? 'PauseIcon' : 'MicIcon';\n }\n },\n created() {\n this.setSupportedMimeType();\n },\n methods: {\n setSupportedMimeType() {\n for (let type of this.supportedMimeTypes) {\n if (MediaRecorder.isTypeSupported(type)) {\n this.mimeType = type;\n break;\n }\n }\n },\n async toggleRecording() {\n if (!this.isRecording) {\n await this.startRecording();\n } else {\n this.stopRecording();\n }\n this.isRecording = !this.isRecording;\n },\n async startRecording() {\n const stream = await navigator.mediaDevices.getUserMedia({audio: true});\n this.mediaRecorder = new MediaRecorder(stream, {mimeType: this.mimeType});\n this.audioChunks = [];\n this.mediaRecorder.ondataavailable = (event) => {\n this.audioChunks.push(event.data);\n };\n this.mediaRecorder.start();\n\n this.timerProgress = 100;\n this.recordTimer = setInterval(() => {\n this.timerProgress -= (1000 / (this.maxRecordTime * 2)) * 100;\n if (this.timerProgress <= 0) {\n this.stopRecording();\n }\n }, 500);\n },\n stopRecording() {\n clearInterval(this.recordTimer)\n this.timerProgress = 100\n this.mediaRecorder.stop()\n this.mediaRecorder.onstop = async () => {\n const audioBlob = new Blob(this.audioChunks, {type: this.mimeType});\n const audioBase64 = await this.blobToBase64(audioBlob);\n this.postAudio(audioBase64);\n };\n },\n blobToBase64(blob) {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n const base64String = reader.result.split(',')[1];\n resolve(base64String);\n };\n });\n },\n async postAudio(audioBase64) {\n this.isLoading = true\n try {\n const response = await this.$http.post(this.apiUrl, {\n voice: audioBase64, session_id: this.session_id,\n task:\"mediaplanner\"\n }\n );\n console.log(\"Ses formatı:\", this.mediaRecorder.mimeType);\n this.playResponse(response.data.answerVoice)\n this.answerText = response.data.answerText\n this.session_id = response.data.session_id\n this.counter = response.data.counter\n this.finalForm = response.data.final_form\n this.userText = response.data.user_speech_text\n this.isLoading = false\n this.dialogs.push({\n \"you\": response.data[\"user_speech_text\"],\n \"ai\": response.data.answerText\n })\n console.log(this.dialogs)\n if (response.data[\"status\"] === \"COMPLETED\" && response.data[\"task\"] ===\"mediaplanner\") {\n this.createPlan(response.data[\"mediaplan_brief\"])\n this.isCreated = true\n }\n } catch (error) {\n console.error('Ses gönderilirken hata oluştu:', error);\n this.isRecording = false;\n }\n },\n playResponse(audioBase64) {\n this.lastApiResponse = audioBase64;\n this.hasApiResponse = true;\n this.playAudio(audioBase64);\n },\n async replayAudio() {\n if (this.isReplaying) {\n this.$refs.audioPlayer.pause(); // Audio'yu durdur\n this.$refs.audioPlayer.currentTime = 0; // Başa sar\n this.isReplaying = false; // Yeniden çalma modunu kapat\n this.isPlaying = false; // Çalma durumunu kapat\n } else {\n // Audio çalıyorsa durdur\n if (this.isPlaying) {\n this.$refs.audioPlayer.pause();\n this.isPlaying = false;\n }\n\n // API'den gelen sesi tekrar çal\n this.playAudio(this.lastApiResponse);\n this.isReplaying = true; // Yeniden çalma modunu aç\n }\n },\n playAudio(audioBase64) {\n //const audioSrc = `data:${this.mimeType};base64,${audioBase64}`;\n const audioSrc = `data:audio/mpeg;base64,${audioBase64}`;\n this.$refs.audioPlayer.src = audioSrc;\n this.$refs.audioPlayer.load();\n this.$refs.audioPlayer.play().catch(e => console.error(\"Ses yürütme hatası:\", e));\n this.isPlaying = true;\n\n this.$refs.audioPlayer.onended = () => {\n this.isPlaying = false;\n };\n },\n RESET() {\n this.isRecording = false\n this.isPlaying = false\n this.imediaRecorder = null\n this.iaudioChunks = []\n this.recordTimer = null\n this.lastApiResponse = null\n this.isReplaying = false\n this.answerText = null\n this.session_id = null\n this.counter = null\n this.finalForm = {}\n this.userText = null\n this.dialogs = []\n },\n createPlan(mediaFormData) {\n this.$http\n .post(\"mediaplanner/ai/planner\", mediaFormData)\n .then(({data}) => {\n this.$emit(\"formSubmitted\", data);\n setTimeout(() => {\n const briefId = data.plansTable[0].brief_id\n this.$router.push(\"/campaign-manager/brief-form/\" + briefId);\n }, 4000)\n }).catch((e) => {\n console.log(e)\n });\n }\n },\n};\n</script>\n<style lang=\"scss\" scoped>\n.voice-record-wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n height: 500px;\n}\n@keyframes pulse {\n 0% {\n box-shadow: 0 0 0 0 rgba(131, 37, 251, 0.7), 0 0 0 0 rgba(131, 37, 251, 0.5), 0 0 0 0 rgba(131, 37, 251, 0.3);\n }\n 100% {\n box-shadow: 0 0 0 15px rgba(131, 37, 251, 0), 0 0 0 35px rgba(131, 37, 251, 0), 0 0 0 60px rgba(131, 37, 251, 0);\n }\n}\n.pulse-effect {\n animation: pulse 2s infinite;\n}\n.dialog-container {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n</style>","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomRecorder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomRecorder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CustomRecorder.vue?vue&type=template&id=9455654a&scoped=true\"\nimport script from \"./CustomRecorder.vue?vue&type=script&lang=js\"\nexport * from \"./CustomRecorder.vue?vue&type=script&lang=js\"\nimport style0 from \"./CustomRecorder.vue?vue&type=style&index=0&id=9455654a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9455654a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"voice-record-wrapper\"},[(_vm.isLoading)?_c('loading'):_vm._e(),(!_vm.isLoading)?_c('div',[_c('b-button',{staticClass:\"btn-icon rounded-circle mb-1\",class:{'pulse-effect': _vm.isRecording && _vm.getButtonIcon !== 'HeadphonesIcon'},attrs:{\"disabled\":_vm.isPlaying,\"variant\":\"primary\",\"size\":\"lg\"},on:{\"click\":_vm.toggleRecording}},[_c('feather-icon',{attrs:{\"icon\":_vm.getButtonIcon,\"size\":\"48\"}})],1),_c('div',{staticClass:\"mb-3\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.currentStatusText)+\" \")])]),_c('div',[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"outline-secondary\"},on:{\"click\":_vm.RESET}},[_c('feather-icon',{attrs:{\"icon\":\"RefreshCwIcon\"}})],1),(_vm.hasApiResponse)?_c('b-button',{staticClass:\"btn-icon ml-1\",attrs:{\"disabled\":_vm.isRecording,\"variant\":\"outline-secondary\"},on:{\"click\":_vm.replayAudio}},[_c('feather-icon',{attrs:{\"icon\":\"PlayIcon\"}})],1):_vm._e()],1)],1):_vm._e(),_c('audio',{ref:\"audioPlayer\"}),_c('div',{staticClass:\"dialog-container\"},[_c('b-list-group',{staticClass:\"mt-3\"},[_c('b-list-group-item',{staticStyle:{\"width\":\"1154px\"}},[_vm._v(\" Adin: Hello User what a nice day for planning. How can I help you with? \")]),_vm._l((_vm.dialogs),function(dialog,index){return [_c('b-list-group-item',{key:(\"you-\" + index)},[_vm._v(\" User: \"+_vm._s(dialog.you)+\" \")]),_c('b-list-group-item',{key:(\"ai-\" + index)},[_vm._v(\" Adin: \"+_vm._s(dialog.ai)+\" \")])]})],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js\"","<template>\n <div id=\"app\">\n <CustomRecorder />\n </div>\n</template>\n\n<script>\nimport CustomRecorder from './CustomRecorder.vue'\nexport default {\n name: 'App',\n components: {\n CustomRecorder\n }\n // 'https://evrts3ix64.execute-api.eu-central-1.amazonaws.com/prod/development_post'\n}\n</script>\n\n<style>\n\n</style>\n","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=486615f2\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLoadingSpinner.vue?vue&type=style&index=0&id=5db0d5ca&prod&scoped=true&lang=css\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomRecorder.vue?vue&type=style&index=0&id=9455654a&prod&lang=scss&scoped=true\""],"sourceRoot":""}