JSFiddle - React, Tailwind, and code Playground

by karthick6891

Babel + JSX

async function wait(ms) { await new Promise(resolve => setTimeout(()=>resolve(), ms)); }

function getBrowser(){function getBrowserInner(){var tem,ua=navigator.userAgent,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[]
return/trident/i.test(M[1])?(tem=/\brv[ :]+(\d+)/g.exec(ua)||[],"IE "+(tem[1]||"")):"Chrome"===M[1]&&(tem=ua.match(/\b(OPR|Edge)\/(\d+)/),null!==tem)?tem.slice(1).join(" ").replace("OPR","Opera"):(M=M[2]?[M[1],M[2]]:[navigator.appName,navigator.appVersion,"-?"],null!==(tem=ua.match(/version\/(\d+)/i))&&M.splice(1,1,tem[1]),M.join(" "))}var name_version_str=getBrowserInner(),split=name_version_str.split(" "),version=split.pop(),name=split.join(" ")
return{name:name.toLowerCase(),nameproper:name,version:version}}

let browser = getBrowser().name;
let file_ext = browser === 'firefox' ? 'ogg' : 'webm';
let recorder;
let recorded_data = [];
let stream;
async function doRecord () {
    stream = await navigator.mediaDevices.getUserMedia({ audio: true })

    recorder = new MediaRecorder(stream, { mimeType: 'audio/' + file_ext + '; codecs=opus' });

    recorder.addEventListener('error', function (event) {
      console.log('Audio Recording error', event)
    })

    recorder.addEventListener('dataavailable', function (event) {
      if (typeof event.data === 'undefined' || event.data.size === 0) return

      recorded_data.push(event.data)
    });

    recorder.addEventListener('stop', getBluemixResults);

    alert('ok will record for 5 seconds after you click ok');

    recorder.start(10);

    await wait(5000);

    recorder.stop();

    console.log('ok, recorder stopped');
}

async function getBluemixResults(event) {
    var tracks = stream.getTracks()
    tracks.forEach(function (track) { track.stop() });

    let blob = new Blob(recorded_data, { type:'audio/'+file_ext });

    let audio = document.createElement('audio');
    let url = window.URL.createObjectURL(blob);

    audio.src = url;
    audio.controls = true;
   ...