territorium-microphone
Version:
Componente de prueba
1 lines • 5.32 kB
JavaScript
var TerritoriumMicrophone=function(t){"use strict";function e(t,e,r,n,a,i,o){try{var s=t[i](o),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,a)}function r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null==r)return;var n,a,i=[],o=!0,s=!1;try{for(r=r.call(t);!(o=(n=r.next()).done)&&(i.push(n.value),!e||i.length!==e);o=!0);}catch(t){s=!0,a=t}finally{try{o||null==r.return||r.return()}finally{if(s)throw a}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var a=t.defineComponent({name:"TerritoriumMicrophone",props:{width:{type:[Number,String],default:"50px"},height:{type:[Number,String],default:"20px"},lineWidth:{type:[Number,String],default:"5"}},data:function(){return{canvasCtx:null,canvas:null,audioCtx:null,analyser:null,dataArray:null,bufferLength:null,mediaRecorder:null,stream:null,chunks:[],source:null,audioURL:null,audioFormat:"audio/webm"}},methods:{startRecord:function(){this.mediaRecorder.start()},stopRecord:function(){"recording"==this.mediaRecorder.state&&this.mediaRecorder.stop()},draw:function(){var t=this.canvas.width,e=this.canvas.height;requestAnimationFrame(this.draw),this.analyser.getByteTimeDomainData(this.dataArray),this.canvasCtx.fillStyle="rgb(200, 200, 200)",this.canvasCtx.fillRect(0,0,t,e),this.canvasCtx.lineWidth=this.lineWidth,this.canvasCtx.strokeStyle="rgb(0, 0, 0)",this.canvasCtx.beginPath();for(var r=1*t/this.bufferLength,n=0,a=0;a<this.bufferLength;a++){var i=this.dataArray[a]/128*e/2;0===a?this.canvasCtx.moveTo(n,i):this.canvasCtx.lineTo(n,i),n+=r}this.canvasCtx.lineTo(this.canvas.width,this.canvas.height/2),this.canvasCtx.stroke()},visualize:function(){this.audioCtx||(this.audioCtx=new AudioContext),this.source=this.audioCtx.createMediaStreamSource(this.stream),this.analyser=this.audioCtx.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.source.connect(this.analyser),this.draw()},readAudioURL:function(t){return new Promise((function(e,r){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e(n.result)},n.onerror=r}))},mediaRecorderOnStop:function(t){var r,n=this;return(r=regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:console.log("mediaRecorderOnStop send-url-audio this.chunks 1",n.chunks),e=new Blob(n.chunks,{type:n.audioFormat}),n.chunks=[],n.$emit("send-url-audio",e),console.log("mediaRecorderOnStop send-url-audio",e),console.log("mediaRecorderOnStop send-url-audio this.chunks 2",n.chunks);case 6:case"end":return t.stop()}}),t)})),function(){var t=this,n=arguments;return new Promise((function(a,i){var o=r.apply(t,n);function s(t){e(o,a,i,s,u,"next",t)}function u(t){e(o,a,i,s,u,"throw",t)}s(void 0)}))})()},onDataAvailable:function(t){this.chunks.push(t.data)},onError:function(t){console.log("The following error occured: "+t)},updateStreamMic:function(t){this.canvasCtx=this.$refs.canvas.getContext("2d"),this.canvas=this.$refs.canvas,this.stream=t,this.mediaRecorder=new MediaRecorder(this.stream),this.mediaRecorder.onstop=this.mediaRecorderOnStop,this.mediaRecorder.ondataavailable=this.onDataAvailable,this.visualize()},getAudio:function(t){this.audioFormat=t,this.stopRecord(),this.startRecord()}}}),i=function(){t.useCssVars((function(t){return{ec09f2b2:t.width,c8d25734:t.height}}))},o=a.setup;a.setup=o?function(t,e){return i(),o(t,e)}:i;var s=t.withScopeId("data-v-2bb71b2e");t.pushScopeId("data-v-2bb71b2e");var u={class:"territorium-microphone"},c={class:"visualizer",ref:"canvas"};t.popScopeId();var d=s((function(e,r,n,a,i,o){return t.openBlock(),t.createBlock("div",u,[t.createVNode("canvas",c,null,512)])}));!function(t,e){void 0===e&&(e={});var r=e.insertAt;if(t&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===r&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}("\n.territorium-microphone[data-v-2bb71b2e] {\n display: flex;\n justify-content: center;\n flex-direction: column;\n text-align: center;\n background-color: aquamarine;\n width: 100%;\n}\n.visualizer[data-v-2bb71b2e]{\n width: var(--ec09f2b2);\n height: var(--c8d25734);\n}\n"),a.render=d,a.__scopeId="data-v-2bb71b2e";var l=function(){var t=a;return t.install=function(e){e.component("TerritoriumMicrophone",t)},t}(),h=Object.freeze({__proto__:null,default:l});return Object.entries(h).forEach((function(t){var e=r(t,2),n=e[0],a=e[1];"default"!==n&&(l[n]=a)})),l}(Vue);