UNPKG

@5minds/node-red-dashboard-2-processcube-audio-capture

Version:
3 lines (2 loc) 2.65 kB
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("button[data-v-eb9ab7bf]{padding:8px;border-style:solid;border-radius:4px}.ui-audio-capture[data-v-eb9ab7bf]{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;padding:5px}")),document.head.appendChild(e)}}catch(d){console.error("vite-plugin-css-injected-by-js",d)}})(); (function(s,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],t):(s=typeof globalThis<"u"?globalThis:s||self,t(s["ui-audio-capture"]={},s.Vue))})(this,function(s,t){"use strict";const c=(i,e)=>{const r=i.__vccOpts||i;for(const[n,d]of e)r[n]=d;return r},u={name:"AudioCapture",inject:["$socket"],props:{id:{type:String,required:!0},props:{type:Object,default:()=>({})},state:{type:Object,default:()=>({enabled:!1,visible:!1})}},data(){return{isRecording:!1,mediaRecorder:null,audioCanBeSend:!1,audioChunks:[]}},computed:{start(){return this.props.start||"Start"},stop(){return this.props.stop||"Stop"},send(){return this.props.send||"Send"}},methods:{async toggleRecording(){this.isRecording?this.stopRecording():await this.startRecording()},async startRecording(){this.audioCanBeSend=!1;try{const i=await navigator.mediaDevices.getUserMedia({audio:!0});this.mediaRecorder=new MediaRecorder(i),this.mediaRecorder.ondataavailable=e=>{e.data.size>0&&this.audioChunks.push(e.data)},this.mediaRecorder.start(),this.isRecording=!0}catch(i){console.error("Error accessing microphone:",i)}},stopRecording(){this.audioCanBeSend=!0,this.mediaRecorder&&this.mediaRecorder.state!=="inactive"&&(this.mediaRecorder.stop(),this.mediaRecorder=null,this.isRecording=!1)},sendAudio(){this.audioCanBeSend=!1;const i=new Blob(this.audioChunks,{type:"audio/webm"}),e=new FileReader;e.onloadend=()=>{const r=e.result.split(",")[1];this.$socket.emit("handle-audio",this.id,{fileBase64:r,fileBlob:i,fileChunks:this.audioChunks}),this.audioChunks=[]},e.readAsDataURL(i)}}},l={class:"ui-audio-capture"};function p(i,e,r,n,d,o){return t.openBlock(),t.createElementBlock("div",l,[t.createElementVNode("button",{onClick:e[0]||(e[0]=(...a)=>o.toggleRecording&&o.toggleRecording(...a))},t.toDisplayString(d.isRecording?o.stop:o.start),1),d.audioCanBeSend?(t.openBlock(),t.createElementBlock("button",{key:0,onClick:e[1]||(e[1]=(...a)=>o.sendAudio&&o.sendAudio(...a))},t.toDisplayString(o.send),1)):t.createCommentVNode("",!0)])}const h=c(u,[["render",p],["__scopeId","data-v-eb9ab7bf"]]);s.AudioCapture=h,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});