{"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":""}